如何找到我的Python site-packages目录位置?
我该如何找到我的 site-packages
目录的位置?
22 个回答
384
这个解决方案有两个特点:
- 在虚拟环境外面时,它能提供全局的包路径,
- 在虚拟环境里面时,它能提供虚拟环境的包路径。
这个功能可以用一行代码实现:
python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
为了更容易阅读,这段代码可以格式化成如下样子:
from distutils.sysconfig import get_python_lib
print(get_python_lib())
来源:来自一个非常旧的版本的“如何安装Django”文档(虽然这对不仅仅是Django的安装有用)
700
>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
(或者直接用 site.getsitepackages()[0]
获取第一个项目)
1097
网站包目录有两种类型,分别是 全局 和 用户专用。
全局 网站包目录(也叫 "dist-packages")在你运行以下命令时会出现在
sys.path
列表中:python -m site
如果你想要更简洁的列表,可以在 Python 代码中运行
getsitepackages
,它来自于 site 模块:python -c 'import site; print(site.getsitepackages())'
注意: 在虚拟环境中,getsitepackages 在旧版本的
virtualenv
中不可用,不过上面的sys.path
仍然能正确列出虚拟环境的包目录。在 Python 3 中,你可以使用 sysconfig 模块 来替代:python3 -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])'
用户专用 网站包目录(PEP 370)是 Python 安装你本地包的地方:
python -m site --user-site
如果这个目录指向一个不存在的地方,检查一下 Python 的退出状态,并查看
python -m site --help
来获取解释。提示: 运行
pip list --user
或pip freeze --user
可以列出所有已安装的 用户专用 网站包。
实用小贴士
<package>.__path__
可以帮助你找到特定包的位置:(详细信息)$ python -c "import setuptools as _; print(_.__path__)" ['/usr/lib/python2.7/dist-packages/setuptools']
<module>.__file__
可以帮助你找到特定模块的位置:(区别)$ python3 -c "import os as _; print(_.__file__)" /usr/lib/python3.6/os.py
运行
pip show <package>
可以显示 Debian 风格的包信息:$ pip show pytest Name: pytest Version: 3.8.2 Summary: pytest: simple powerful testing with Python Home-page: https://docs.pytest.org/en/latest/ Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others Author-email: None License: MIT license Location: /home/peter/.local/lib/python3.4/site-packages Requires: more-itertools, atomicwrites, setuptools, attrs, pathlib2, six, py, pluggy