[英]How is the python module search path determined on Mac OS X?
導入非內置模塊時,解釋器將搜索sys.path
給出的位置。 sys.path
從這些位置初始化( http://docs.python.org/library/sys.html#sys.path ):
雖然前兩個來源是直截了當的,但任何人都可以解釋第三個如何運作,以及影響它的可能性有多大?
雖然我對一般解決方案感興趣,但我的具體問題是:
/Library/Python/2.7/
導入numpy,這是superpack安裝它們的地方,而不是來自enthought site-packages。 py2app
-A
創建的wxPython
應用程序與使用python start_app.py
啟動應用程序時沒有相同的sys.path
。 根據平台,第三個源的基礎是在編譯時設置(或更精確地配置時間)。 然后通過.pth
文件等將其擴展並添加到運行時(一旦編譯Python可執行文件以影響第三個源,就可以執行此操作)。
Python文檔的這一頁面包含有關.pth
文件如何工作的所有信息,以及有關如何從構建時設置等構建sys.path
更多信息.pth
。 HTML
當你可以影響整個sys.path
時,我不確定你為什么要特別影響第三個源。 無論如何,影響sys.path
的三種方式(不重新編譯Python或修補源代碼)是:
.pth
文件並將其刪除到Python掃描包的位置。 (有關詳細信息,請參閱前面的鏈接。) 以編程方式,通過導入sys
然后附加或前置到sys.path
import sys sys.path.insert(0, '/this/path/will/be/considered/first')
希望這三種方式中的一種可以幫助你做你想做的事。
在Mac OS X 10.7.5系統上,我還遇到了Enthought python在/Library/Python/2.7/中尋找模塊的問題。 顯然,這是由位於/Library/Python/2.7/site-packages中的文件easy-install.pth引起的。 更改此文件的擴展名后,Enthought python導入了Enthought模塊(來自/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.