簡體   English   中英

python sys.path故障排除

[英]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.prefixsys.exec_prefix 在我的計算機上,它們都指向C:\\Python27 並且默認情況下它會搜索lib/site-packages 所以現在條目C:\\Python27; C:\\Python27\\lib\\site-packages C:\\Python27; C:\\Python27\\lib\\site-packages附加到上面的列表中。

  • 接下來,它按字母順序搜索每個.pth文件。 我的網站包中有easy_install.pthpywin32.pthsetuptools.pth 事情開始變得怪異。 如果.pth文件中的條目只是目錄位置,那將是直截了當的。 它們只會逐行附加到sys.path 但是easy_install.pth有一些python代碼會導致easy_install.pth列出的條目在sys.path列表的開頭添加包列表。

  • 在此之后, pywin32.pthsetuptools.pth中的目錄條目pywin32.pth setuptools.pth添加到sys.path列表的末尾。

注意:雖然上面的討論屬於Windows,但它在Mac上也是類似的。在Mac上它只是在開始查看.pth文件的site-packages目錄之前添加了不同的操作系統默認值,如darwin等。

在您的情況下,您可以首先啟動python shell並檢查sys.prefixsys.exec_prefix指向的位置,然后從那里向下鑽取。

注意2:如果您使用的是諸如Aptana / PyDev之類的IDE,它將添加更多自己的配置。 所以你需要警惕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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