[英]Troubleshooting python sys.path
http://docs.python.org/library/sys.html上的python文檔說sys.path
是......
從環境變量PYTHONPATH初始化,加上依賴於安裝的默認值。
我在我的sys.path
中發現了一個導致問題的路徑項,並且在跟蹤它時遇到了很多麻煩。 我可以在Google上看到的是解釋如何將項目添加到PYTHONPATH
變量的人。
我的問題是:是否有任何工具,可以幫助追查特定項目是在你sys.path
? 如何找到有關“依賴於安裝的默認值”的更多信息?
到目前為止,我發現部分答案是在python本身使用strace
並查找.pth
文件。 我還發現了一個sys.path_importer_cache
,它可能適用也可能不適用。
我最近遇到了一些關於sys.path
問題,這就是我如何試圖弄清楚條目的來源。 我能夠跟蹤所有條目以及它們來自哪里。 希望這對你也有幫助。
第一個添加C:\\WINNT\\system32\\python27.zip
python27.zip(PEP273中的更多細節)。
接下來添加的是來自Windows注冊表中的條目。 條目C:\\Python27\\DLLs;C:\\Python27\\lib; C:\\Python27\\lib\\plat-win; C:\\Python27\\lib\\lib-tk
C:\\Python27\\DLLs;C:\\Python27\\lib; C:\\Python27\\lib\\plat-win; C:\\Python27\\lib\\lib-tk
C:\\Python27\\DLLs;C:\\Python27\\lib; C:\\Python27\\lib\\plat-win; C:\\Python27\\lib\\lib-tk
來自HOT_KEY_LOCAL_USER/Python/PythonCore/2.7/PythonPath
。 有關Python源代碼注釋的更多詳細信息,請訪問http://svn.python.org/projects/python/trunk/PC/getpathp.c (這些條目對我來說是最難理解的,直到我找到上面的鏈接)。
接下來,如site
包文檔( 鏈接 )中所述, sys.path
是從sys.prefix
和sys.exec_prefix
。 在我的計算機上,它們都指向C:\\Python27
。 並且默認情況下它會搜索lib/site-packages
。 所以現在條目C:\\Python27; C:\\Python27\\lib\\site-packages
C:\\Python27; C:\\Python27\\lib\\site-packages
附加到上面的列表中。
接下來,它按字母順序搜索每個.pth
文件。 我的網站包中有easy_install.pth
, pywin32.pth
和setuptools.pth
。 事情開始變得怪異。 如果.pth
文件中的條目只是目錄位置,那將是直截了當的。 它們只會逐行附加到sys.path
。 但是easy_install.pth
有一些python代碼會導致easy_install.pth
列出的條目在sys.path
列表的開頭添加包列表。
在此之后, pywin32.pth
, setuptools.pth
中的目錄條目pywin32.pth
setuptools.pth
添加到sys.path
列表的末尾。
注意:雖然上面的討論屬於Windows,但它在Mac上也是類似的。在Mac上它只是在開始查看.pth
文件的site-packages
目錄之前添加了不同的操作系統默認值,如darwin
等。
在您的情況下,您可以首先啟動python shell並檢查sys.prefix
和sys.exec_prefix
指向的位置,然后從那里向下鑽取。
注意2:如果您使用的是諸如Aptana / PyDev之類的IDE,它將添加更多自己的配置。 所以你需要警惕。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.