[英]Install package for Sublime Text build-in Python?
我需要在Sublime插件中導入第三方軟件包。 看來Sublime使用的是非系統Python解釋器,因此無法導入先前由sudo pip install ...
在系統Python中全局安裝的軟件包。
是否有解決方法來為內置Sublime Python安裝軟件包? 還是讓Sublime使用系統Python運行插件? 但是,第二種情況是否可以導入Python軟件包( sublime, sublime_plugin
)?
我的主要版本是Sublime Text3。OSX10.10
謝謝。
請參閱我的答案在這里的全部細節,但本質的答案是把你的插件目錄所需的包裝(S)(確保其許可證(或多個)允許以這種方式重新分配)作為一個單獨的文件夾,然后使用以下模型:
try: #ST3
from .foobar import mymodule
import .baz
except ImportError: #ST2
from foobar import mymodule
import baz
用於導入模塊。 您的答案的主要問題是A)Mac特定,B)ST2特定和C)不可移植-您無法使用此方法分發插件。
僅使用可同時用於2.6和3.3的純Python模塊(如果要同時面向ST2和ST3)將是最簡單的。 如果您使用已編譯的模塊( lxml
, numpy
等),則需要分別針對2.6和3.3編譯版本(同樣,如果您同時支持兩個編輯器版本),並且必須針對OS X,Linux進行編譯,和Windows。 最后,對於Linux和Windows,您將需要32位和64位版本(OS X僅是64位)。 我知道的唯一做到這一點的PyV8
是Emmet
的PyV8
node / js引擎,我想可能還有1或2個。 如您所見,支持和升級將是一個真正的痛苦。
我發現的一種解決方案是切換到Sublime Text2。它使用系統Python 2.6,因此可以為其安裝Python插件:
>>> import os
>>> print(os.__file__)
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/os.pyc
所以,我剛跑
sudo /System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6 setup.py install
在我的軟件包目錄中,現在可以從Sublime2控制台/插件導入軟件包。
Sublime Text 3解決方案仍然缺失。
如果第3方軟件包本身導入了另一個模塊並且不使用相對導入(許多軟件包不使用相對導入PPE8 ), 則相對導入將不起作用 。
我的解決方案是將所有第三方程序包及其依賴項放在插件子文件夾中。 並將該子文件夾添加到sys.path中(看起來像骯臟的hack,但它可以正常工作):
假設插件的結構如下:
插件文件夾/
-分機號
---- foo / <-此模塊需要bar模塊
---- bar / <-因此我們也將其包括在內
---- baz / <-我們插件的另一個第三方Python模塊
-plugin.py
因此,在plugin.py中,我們可以編寫如下內容:
sys.path.append(os.path.join(os.path.dirname(__file__), "ext"))
import foo
from baz import foobaz
優點:
缺點:
對於沒有依賴關系的第三方程序包,保持顯式相對導入的最佳方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.