簡體   English   中英

如何在Mac OS X上確定python模塊搜索路徑?

[英]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 ):

  1. 包含輸入腳本(或當前目錄)的目錄
  2. PYTHONPATH
  3. 依賴於安裝的默認值

雖然前兩個來源是直截了當的,但任何人都可以解釋第三個如何運作,以及影響它的可能性有多大?

雖然我對一般解決方案感興趣,但我的具體問題是:

  • 我已經安裝了32位Enthought分發版 ,然后是Scipy-Superpack 現在,興奮的python嘗試從/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或修補源代碼)是:

  1. 通過PYTHONPATH環境變量。
  2. 通過創建.pth文件並將其刪除到Python掃描包的位置。 (有關詳細信息,請參閱前面的鏈接。)
  3. 以編程方式,通過導入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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM