Как включить сторонние пакеты Python в плагины Sublime Text 2
Я пишу плагин sublime text 2, который использует модуль SEAPI.py , который сам по себе импортирует модульзапросов .
Поскольку sublime text 2 использует собственный встроенный интерпретатор python, он не видит модуль requests, установленный на моей машине ubuntu (я получаю следующую ошибку: ImportError: нет модуля с именем requests).
Лучшим решением, которое я смог найти до сих пор, было скопировать модуль "запросы" (весь каталог файлов) из /usr / lib/python2. 7 / dist-packages / requests into my plugin directory in the sublime text packages dir. Но после этого он говорит, что не может найти модуль 'urllib3'.
Есть ли лучший способ импортировать модуль запросов, чтобы мне не пришлось копировать все файлы в каталог плагина ?
Текущий код, который я использую, выглядит следующим образом:
MyPlugin.py
import sublime
import sublime_plugin
import SEAPI
...
SEAPI.py
import requests
try:
import simplejson as json
except:
import json
from time import time, sleep
...
Редактировать: Выбранный ответ верен и исправляет мой основной вопрос, но другая проблема существует с использованием текущей версии "запросов"со встроенным интерпретатором sublime text 2. В python ST2 отсутствуют различные модули, которые существуют в обычном 2.7 python (например, "fileio").
Я решил ее с помощью модуля "запросы" отсюда: https://github.com/bgreenlee/sublime-github
И мне пришлось редактировать 'urllib3/response.py' файл на это:
try:
from cStringIO import StringIO as BytesIO
except ImportError:
pass # _fileio doesn't seem to exist in ST's python in Linux, but we don't need it
2 ответа:
Вам нужно связать полный дистрибутив запросов с вашим пакетом Python, а затем изменить Python
sys.path
(где он ищет модули), чтобы указать на папку, содержащую папкуrequests
.
Загрузите библиотеку запросов из PyPi и распакуйте ее вручную в папке плагина
Перед импортом запросов в ваш плагин добавьте папку corrcet в sys.путь к папке, в которой можно найти запросы импорта
В (непроверенный) код должен выглядеть примерно так:
import sys import os # request-dists is the folder in our plugin sys.path.append(os.path.join(os.path.dirname(__file__), "requests-dist")) import requests
Это также предполагает, что
requests
setup.py
не делает никаких хаков при установке модуля с помощьюeasy_install
илиpip
.Вы также можете импортировать
requests
zip напрямую, поскольку Python поддерживает импорт из ZIP-файлов, предполагая, что запросы распространяются совместимым образом. Пример (расширенный):Https://github.com/miohtama/ztanesh/blob/master/zsh-scripts/python-lib/zipimporter.py
Подробнее о sys.путь трюк (2004)