簡體   English   中英

創建輔助站點包目錄(並從其中的.pth文件加載包)

[英]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的控制之下。 但是,似乎這是不可能的。

我當然不是唯一對這個問題感興趣的人。 我打賭大量的通用“pth文件無法正常工作”的問題和在線發帖,我偶然發現與這個問題有關。 有一個很好的解決方案嗎?

看看網站模塊。 它提供了addsitedir函數,它應該做你想要的。

最簡單的方法是創建一個名為sitecustomize.pyusercustomize.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.

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