[英]Organizing downloaded python libraries
我注意到我的python庫和其他依賴項存儲在目錄層次結構的不同位置。 例如,
/Library/Python/2.7/site-packages/
/usr/local/lib/python2.7/site-packages/
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/
/Users/<name>/bin/
最近的一次升級失敗(並且我的$PATH
變量現在包含7個目錄)使我相信我需要以某種方式重新組織這些文件。
1)當“插入”或“釀造”新庫時,例如,下載的文件應該進入哪個特定目錄? (例如/Library/python/2.7/site-packages)
2)是否有有用的資料來組織個人檔案系統? (特別是在下載的python庫中,或更普遍地)
讓我們按順序處理這些:
1)當“插入”或“釀造”新庫時,例如,下載的文件應該進入哪個特定目錄?
首先,下載的文件進入一個臨時目錄,並在安裝后被刪除。 pip
和brew
都會自動處理該問題。
對於Python軟件包,無論是否通過pip
安裝,您都可以在系統級安裝和特定於用戶的安裝之間進行選擇(請參閱User Installs ),但是否則,它們只是進入您的Python站點軟件包。 可以配置該位置,但是沒有充分的理由。 對於Apple的預裝Python,它是/Library/python/2.7/site-packages
。 如果您需要更多控制權,則不應嘗試保留自定義站點包目錄(或安裝多個Python); 使用virtualenv
構建單獨的虛擬環境,然后pip
將安裝到當前處於活動狀態的任何環境中,而不是安裝到常規站點程序包中。
對於用brew
安裝的程序和庫,它們會內置到“ kegs”中,位於/usr/local/Cellar
下的隔離目錄中,然后任何有用的內容都將從那里鏈接到/usr/local/bin
, /usr/local/lib
等等。如果您想了解更多,Homebrew文檔將對其進行詳細說明。 當然,這包括您安裝為Python軟件包依賴項的庫。 例如,如果您brew install libxslt
以便可以pip install lxml
, brew
不知道為什么要安裝libxslt
,它只是將其構建在一個桶中,並且像其他任何東西一樣將其鏈接到/usr/local/lib
。
無論哪種方式,你不應該試圖整理東西。 pip
和brew
知道它們的安裝位置,如果事后將它們擰緊,則卸載,更新等操作可能會中斷。
而且最近一次升級失敗(其中$ PATH var現在包含7個目錄)使我相信我需要以某種方式重新組織這些文件。
您的$PATH
與Python查找庫的位置無關。 那就是您的shell尋找可執行程序的地方。 Python查找的是sys.path
,這是完全不同的東西。
我注意到我的python庫和其他依賴項存儲在目錄層次結構的不同位置
不,他們真的不是。 您安裝的每個Python庫都進入site-packages目錄。
那么, sys.path
上的所有其他內容呢? 好吧,這里有Python標准庫( /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7
和/或/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7.zip
),Apple預安裝的其他模塊( /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
),以及這兩個位置中的各種子目錄(以及zip文件和eggfile文件),當然是當前的工作目錄( '.'
或''
),應該是它。
(即/usr/local/python、/Library/python/2.7/site-packages或/ usr / bin / python ..)
/usr/bin/python
不是存儲庫的地方。 根本不是目錄; 它是一個可執行文件。 當您在終端上鍵入python
或運行以#!/usr/bin/python
或#!/usr/bin/env python
開頭的腳本時,將運行該程序。
/usr/local/python
根本不應該存在。 它不是Apple預先安裝的Python,Python.org官方安裝或Homebrew安裝的標准路徑的一部分。 如果您已經創建了該文件並將其添加到sys.path
,那么……如果您不想這樣做,請不要這樣做。
如果您的意思是/usr/local/bin/python
,那么(a)是可執行文件,而不是庫的位置,並且(b)這意味着您已經與Apple預裝的Python一起安裝了第二個Python,並且如果您無法保持它們筆直,您可能應該擺脫它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.