问题:python的site-packages目录是什么?
site-packages
在与Python相关的各种文章中都提到了该目录。它是什么?如何使用它?
回答 0
site-packages
是手动构建的Python软件包的目标目录。从源代码构建和安装Python软件包时(使用distutils,可能通过执行python setup.py install
),site-packages
默认情况下会找到已安装的模块。
有标准位置:
- Unix(纯)1:
prefix/lib/pythonX.Y/site-packages
- Unix(非纯):
exec-prefix/lib/pythonX.Y/site-packages
- 视窗:
prefix\Lib\site-packages
1 Pure表示该模块仅使用Python代码。非纯也可以包含C / C ++代码。
site-packages
是默认情况下是Python 搜索路径的一部分,因此之后可以轻松导入在那里安装的模块。
有用的阅读
- 安装Python模块(适用于Python 2)
- 安装Python模块(适用于Python 3)
回答 1
当您将--user
option与pip一起使用时,该软件包将安装在用户的文件夹中,而不是全局文件夹中,并且您无需以管理员权限运行pip命令。
用户的packages文件夹的位置可以使用以下方法找到:
python -m site --user-site
这将打印如下内容:
C:\Users\%USERNAME%\AppData\Roaming\Python\Python35\site-packages
当您不对--user
pip 使用option时,该软件包将安装在以下给定的全局文件夹中:
python -c "import site; print(site.getsitepackages())"
这将打印如下内容:
['C:\\Program Files\\Anaconda3', 'C:\\Program Files\\Anaconda3\\lib\\site-packages'
注意:以上打印值适用于在Windows 10上安装了默认值的Anaconda 4.x的情况。
回答 2
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’