![](/img/trans.png)
[英]Using Python .pth files assuming no access to site-packages directory
[英]Creating a secondary site-packages directory (and loading packages from .pth files therein)
我想將一些軟件包安裝到第三方site-packages
目錄(超出標准系統位置)。 有沒有辦法設置它,以便其中的.pth文件得到尊重?
背景:我正在使用OS X,virtualenv和自制軟件。 有一些軟件包(特別是我的wxPython)不能通過pip很好地安裝到virtualenv中。 在這些情況下,有自制軟件包可以替代它們。 Homebrew在/usr/local/lib/python2.7
創建了第三個site-packages文件夾。 我想簡單地指向這個文件夾,並將所有項目的維護保留在brew
的控制之下。 但是,似乎這是不可能的。
$PYTHONPATH
追加到路徑不會加載.pth文件。 ( OS X上的Python 2.6應該在$ PYTHONPATH中處理多個easy-install.pth文件嗎? ) add2virtualenv
的包裝器為.pth文件添加了一些額外的智能,只是簡單地列出了目錄,但我相信它只是重新排序路徑列表。 我當然不是唯一對這個問題感興趣的人。 我打賭大量的通用“pth文件無法正常工作”的問題和在線發帖,我偶然發現與這個問題有關。 有一個很好的解決方案嗎?
看看網站模塊。 它提供了addsitedir
函數,它應該做你想要的。
最簡單的方法是創建一個名為sitecustomize.py
或usercustomize.py
的文件,並將其放在當前的PYTHONPATH
目錄(或最終在sys.path
上的任何目錄)中,其中包含以下內容:
import site
site.addsitedir('/usr/local/lib/python2.7')
當Python開始時,嘗試導入sitecustomize
然后usercustomize
,這就是為什么這樣做的原因。 從網站文檔:
在這些路徑操作之后,嘗試導入名為
sitecustomize
的模塊,該模塊可以執行任意特定於站點的自定義。 它通常由site-packages目錄中的系統管理員創建。 如果此導入失敗並出現ImportError
異常,則會以靜默方式忽略該異常。在此之后,如果
ENABLE_USER_SITE
為true,則嘗試導入名為usercustomize
的模塊,該模塊可以執行任意特定於用戶的自定義。 此文件旨在在用戶site-packages目錄(見下文)中創建,該目錄是sys.path
一部分,除非被-s
禁用。 將默默忽略ImportError
。
PEP 370專門針對每用戶site-packages
目錄的創建,以處理用戶無權訪問系統范圍的site-packages
。
例如在Unix(包括Mac OS)上,假設有人使用Python 3.6,可以創建以下目錄並在其中放置.pth
文件
~/.local/lib/python3.6/site-packages
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.