Подтвердить что ты не робот

Как включить сторонние пакеты Python в плагины Sublime Text 2

Я пишу возвышенный текстовый плагин 2, который использует модуль SEAPI.py, который сам импортирует запрашивает модуль.

Так как возвышенный текст 2 использует собственный встроенный интерпретатор python, он не видит модуль запросов, установленный на моем компьютере ubuntu (я получаю следующую ошибку: ImportError: No module named requests).

Лучшим решением, которое я смог найти, было скопировать модуль "запросы" (весь каталог файлов) из /usr/lib/python 2.7/dist-packages/requests в мой каталог плагинов в потоковом пакете 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
...

Edit: Выбранный ответ правильный и исправляет мой главный вопрос, но существует другая проблема с использованием текущей версии "Запросов" со встроенным интерпретатором sublime text 2. В ST2 python отсутствуют различные модули, которые существуют в обычном 2.7-питоне (например, '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 python in Linux, but we don't need it
4b9b3361

Ответ 1

Вам нужно связать полный дистрибутив запросов с вашим пакетом Python, а затем изменить Python sys.path (где он ищет модули), чтобы указать папку, содержащую папку requests.

  • Загрузите библиотеку запросов из PyPi и извлеките ее вручную в папке вашего плагина

  • Прежде чем импортировать запросы в свой плагин, добавьте папку corrcet в sys.path, чтобы указать папку, где она может найти запросы, импортировать

Код (untested) должен выглядеть примерно так:

  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.path(2004)

http://www.johnny-lin.com/cdat_tips/tips_pylang/path.html

Ответ 2

Ответ Микко хороший, но я, возможно, нашел несколько более простой способ:

import MyAwesomePlugin.requests

"MyAwesomePlugin" - это название вашего плагина, конечно.