簡體   English   中英

如何忽略〜/ .local / lib / python2.7 / site-packages中的python模塊?

[英]How to ignore python module in ~/.local/lib/python2.7/site-packages?

我有一個Python包dateutil~/.local/lib/python2.7/site-packages目錄,以及一個在/usr/lib/python2.7/dist-packages/dateutil 當我嘗試運行從可執行kalibr (照相機校正工具,我下載了CDE), rrule.pydateutil包在~/.local/lib/python2.7/site-packages拋出一個錯誤“導入錯誤:沒有名為分數的模塊”。 我可以通過刪除所說的dateutil包(它使用/usr/lib/python2.7/dist-packages/dateutil那個)來使kalibr運行,但是我擔心這會對其他項目產生影響。

所以我想,這里的根本問題是,蟒蛇喜歡的dateutil包在~/.local/lib/python2.7/site-packages在一個在/usr/lib/python2.7/dist-packages/dateutil

我怎樣才能使python更喜歡后一種呢?

(我正在使用Ubuntu 16.04)

我不認為有一種方法可以選擇在每個軟件包的基礎上從哪個目錄加載軟件包,但是您可以更改Python查找軟件包的順序。 該順序反映在sys.path 默認程序包搜索路徑受特定站點的文件影響 ,但主要是:

  1. 當前目錄。
  2. PYTHONPATH環境變量中列出的目錄。
  3. Python本身隨附的標准庫。
  4. ~/.local下的dist-packages目錄( 用戶site-packages目錄 ),這是pip install --user安裝內容的位置。 您可以通過設置環境變量PYTHONUSERBASE來更改此目錄的路徑,並可以通過將PYTHONNOUSERSITE設置為非空值來完全禁用該路徑。
  5. /usr/local下的dist-packages目錄是pip install安裝的目錄。

因此,如果需要首先遍歷目錄,則可以將其放在PYTHONPATH 在您的情況下,很有可能僅禁用~/.local來運行kalibr。

env PYTHONNOUSERSITE=1 kalibr

要查看包搜索路徑,請運行

python -m site

(所有這些同樣適用於Python3。)

(通常,優先選擇~/.local下的軟件包而不是/usr下的軟件包。理想情況下,軟件包始終向后兼容,如果遇到不兼容的情況,您只需將最新版本安裝在~/.local使用pip install --user 。但是在現實世界中,這並不總是可行的。)

請參閱此處有關更改PYTHONPATH和默認模塊搜索順序的答案 您還應該檢查腳本,看看它是否修改了PYTHONPATHsys.path

暫無
暫無

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

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