[英]What is the difference between Python's 'Extras' and 'site-packages' directories?
[英]What is python's site-packages directory?
目錄site-packages
在各種 Python 相關文章中都有提及。 它是什么? 如何使用它?
site-packages
是手動構建的 Python 包的目標目錄。 當您從源代碼構建和安裝 Python 包時(使用distutils ,可能通過執行python setup.py install
),默認情況下您會在site-packages
找到已安裝的模塊。
有標准位置:
prefix/lib/pythonX.Y/site-packages
exec-prefix/lib/pythonX.Y/site-packages
prefix\\Lib\\site-packages
1 Pure表示該模塊僅使用 Python 代碼。 非純也可以包含 C/C++ 代碼。
默認情況下, site-packages
是 Python搜索路徑的一部分,因此安裝在那里的模塊之后可以輕松導入。
當您將--user
選項與 pip 一起使用時,軟件包將安裝在用戶的文件夾而不是全局文件夾中,您無需以管理員權限運行 pip 命令。
可以使用以下命令找到用戶包文件夾的位置:
python -m site --user-site
這將打印如下內容:
C:\Users\%USERNAME%\AppData\Roaming\Python\Python35\site-packages
當您不將--user
選項與 pip 一起使用時,該軟件包將安裝在以下給出的全局文件夾中:
python -c "import site; print(site.getsitepackages())"
這將打印如下內容:
['C:\\Program Files\\Anaconda3', 'C:\\Program Files\\Anaconda3\\lib\\site-packages'
注意:以上打印值適用於安裝了默認值的 Anaconda 4.x 的 Windows 10。
site-packages 只是 Python 安裝其模塊的位置。
無需“查找”,python 自己知道在哪里可以找到它,該位置始終是 PYTHONPATH (sys.path) 的一部分。
以編程方式,您可以通過以下方式找到它:
import sys
site_packages = next(p for p in sys.path if 'site-packages' in p)
print site_packages
'/Users/foo/.envs/env1/lib/python2.7/site-packages'
在我的 CentOS7.9 Linux(一個 RedHat 克隆)上,它位於~/.local/lib/python3.9/site-packages/
,不需要將它包含在 PYTHONPATH 變量中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.