簡體   English   中英

Python的“其他”目錄和“站點包”目錄之間有什么區別?

[英]What is the difference between Python's 'Extras' and 'site-packages' directories?

我對OS X上的Python使用“其他”和“站點包”中的包的方式感到困惑。 特別是,我對在這些目錄中看到的內容,目錄中重復的軟件包如何相互影響以及應該在何處放置安裝的軟件包感到困惑。

我曾以為,“附加” 1是對於那些不Python核心的部分包的位置,但仍然是一個給定的平台分發。 例如,OS X隨PyObjCtwistednumpy一起PyObjC 這些都可以在“其他”中找到。 我還假設“ site-packages” 2是我隨后安裝軟件包的位置,並且該目錄為空或“新”計算機上不存在。 此外,我假設安裝新軟件包將只保留版本在“其他”中,而將我所做的所有更新都放在“站點軟件包”中,而這些更新將“掩蓋”在“其他”中。 (因此,例如,只需刪除“ site-packages”即可恢復默認安裝。)

令我感到困惑的是,我的“額外”目錄的內容正在減少。 與新安裝的OS X(10.8.2)上的內容相比,我當前配置的“其他”丟失了

altgraph
altgraph-0.9-py2.7.egg-info
dateutil
macholib
macholib-1.4.2-py2.7.egg-info
modulegraph
modulegraph-0.9.1-py2.7.egg-info
numpy #though numpy-1.6.1-py2.7.egg-info is there
pkg_resources.py  # though .pyc is there
py2app
py2app-0.6.3-py2.7.egg-info
setuptools  # though setuptools-0.6c12dev_r88846-py2.7.egg-info is there
site.py  # though .pyc and .pyo are there
xattr
xattr-0.6.2-py2.7.egg-info
zope
zope.interface-3.5.1-py2.7.egg-info

並且在全新安裝中找不到兩個其他文件

pkg_resources.py.OLD.1356069438.31
setuptools-0.6c12dev_r88846-py2.7.egg-info.OLD.1356069438.31
setuptools.OLD.1356069438.31

盡我所能回憶,這些都是我自己更新過的所有軟件包,所有版本均在“站點軟件包”中。

是否應該以這種方式“減少”“其他”目錄的內容? 是將更新為“其他”的軟件包“移動”到“站點軟件包”,還是應該單獨保留“其他”版本並由“站點軟件包”中的那些簡單地“掩蓋”?


1: /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
2: /Library/Python/2.7/site-packages/

OSX(和Linux)似乎不喜歡在python發行版的默認安裝目錄中安裝其他python軟件包。

pip可以搜索(就像python本身一樣)查找已安裝的模塊,如果進行升級,則會卸載舊版本,然后在您要求的位置安裝新版本,默認為站點軟件包。 如果您仔細查看pip的輸出,它將告訴您刪除了什么以及安裝了什么。

因此,僅當您告訴pip安裝到Extras目錄,或者默認情況下要為OSX修補pip以進行安裝時,這才有效。

刪除舊版本實際上是一件好事,因為否則導入的模塊的版本將取決於您的搜索路徑(sys.path),這很容易出錯。

是否應該減少,這是有爭議的,但這是您使用pip進行升級的正常結果。

暫無
暫無

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

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