Jak włączyć Pakiety Pythona innych firm do wtyczek Sublime Text 2

Piszę sublime text 2 plugin, który używa modułu SEAPI.py , która sama w sobie importuje moduł requests .

Ponieważ sublime text 2 używa własnego wbudowanego interpretera Pythona, nie widzi modułu requests zainstalowanego w moim Ubuntu (dostaję następujący błąd: ImportError: No module named requests).

Najlepszym rozwiązaniem jakie dotychczas znalazłem było skopiowanie modułu 'requests' (całego katalogu plików) z /usr / lib/python2.7/dist-packages / requests into my plugin directory in the sublime text packages dir. Ale potem mówi, że nie może znaleźć modułu 'urllib3'.

Czy jest lepszy sposób na zaimportowanie modułu requests, abym nie musiał kopiować wszystkich plików do mojego katalogu wtyczek ?

Obecny kod, którego używam jest następujący:

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: Wybrana odpowiedź jest poprawna i rozwiązuje moje główne pytanie, istnieje jednak inny problem z używaniem bieżącej wersji 'Requests' z wbudowanym interpreterem Sublime text 2. W Pythonie ST2 brakuje różnych modułów, które istnieją w zwykłym Pythonie 2.7 (np. 'fileio').

Rozwiązałem to za pomocą modułu 'Requests' stąd: https://github.com/bgreenlee/sublime-github

I musiałem edytować "urllib3/response.py" plik do tego:

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
Author: Community, 2013-03-03

2 answers

Musisz połączyć pełną dystrybucję żądań z pakietem Pythona, a następnie zmodyfikować sys.path Pythona (gdzie szuka modułów), aby wskazać folder zawierający folder requests.

  • Pobierz bibliotekę żądań z PyPi i rozpakuj ją ręcznie w folderze wtyczek

  • Przed importowanie żądań do wtyczki, Dołącz folder corrcet do sys.ścieżka do wskazywania folderu, w którym można znaleźć żądania import

The (untested) kod powinien wyglądać tak:

  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

To również zakłada, że requests setup.py nie wykonuje żadnych hacków podczas instalacji modułu za pomocą easy_install lub pip.

Można również zaimportować requests zip bezpośrednio, ponieważ Python obsługuje importowanie z plików ZIP, zakładając, że żądania są dystrybuowane w zgodny sposób. Przykład (zaawansowany):

Https://github.com/miohtama/ztanesh/blob/master/zsh-scripts/python-lib/zipimporter.py

Więcej o sys.path trick (2004)

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

 21
Author: Mikko Ohtamaa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-03 00:08:17

ODPOWIEDŹ Mikko jest dobra, ale chyba znalazłem nieco łatwiejszy sposób:

import MyAwesomePlugin.requests

"MyAwesomePlugin" jest nazwą Twojej wtyczki, oczywiście.

 5
Author: zakdances,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-26 11:02:07