python的site-packages目录是什么?


Answers:


72

site-packages是手动构建的Python软件包的目标目录。从源代码构建和安装Python软件包时(使用distutils,可能通过执行python setup.py install),site-packages默认情况下会找到已安装的模块。

有标准位置:

  • Unix(纯)1prefix/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 搜索路径的一部分,因此之后可以轻松导入在那里安装的模块。


有用的阅读


10
位置恰好/usr/local/lib/python3.6/site-packages在ubuntu上
穆罕默德(Mehmet)'17

我已经看到了带有它的Gentoo系统lib64
MultipleMonomials

2
conda或pip是安装到站点程序包中,还是只是手动构建的程序包?
莫妮卡·赫德内克

2
真正有趣的问题是:为什么选择此目录?为什么不只是安装到/usr/lib/python3.6
Torsten Bronger

40

当您将--useroption与pip一起使用时,该软件包将安装在用户的文件夹中,而不是全局文件夹中,并且您无需以管理员权限运行pip命令。

用户的packages文件夹的位置可以使用以下方法找到:

python -m site --user-site

这将打印如下内容:

C:\Users\%USERNAME%\AppData\Roaming\Python\Python35\site-packages

当您不对--userpip 使用option时,该软件包将安装在以下给定的全局文件夹中:

python -c "import site; print(site.getsitepackages())"

这将打印如下内容:

['C:\\Program Files\\Anaconda3', 'C:\\Program Files\\Anaconda3\\lib\\site-packages'

注意:以上打印值适用于在Windows 10上安装了默认值的Anaconda 4.x的情况。


24

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'


3
可能更容易导入site,然后导入site.getsitepackages()
JSharm

1
并非所有的Python发行版都具有site-packages,这将会引发StopIteration。例如,Debian(和Ubuntu)必须dist-packages安装其分布式模块。
Mike T

如果您使用virtualenv并且不继承全局软件包,那么它将始终有效。我从来没有没有virtualenv的代码
Anthony Perot
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.