我该如何找到Python的site-packages目录的位置?
有两种类型的site-packages目录,全局和每个用户。
-
全局 site-packages("dist-packages")目录在运行以下命令时列在
sys.path
中:python -m site
运行Python代码中site模块中的
getsitepackages
可得到更简明的列表:python -c 'import site; print(site.getsitepackages())'
注意:在虚拟环境中,
virtualenv
的旧版本不支持getsitepackages
,但上述的sys.path
可以正确地列出虚拟环境的site-packages目录。在Python 3中,您可以改为使用sysconfig模块:python3 -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])'
-
每个用户 site-packages 目录(PEP370)是Python安装您的本地包的位置:
python -m site --user-site
如果它指向一个不存在的目录,请检查Python的退出状态并参阅
python -m site --help
以获得说明。提示:运行
pip list --user
或pip freeze --user
可获得所有已安装的每个用户site-packages的列表。
实用技巧
-
可让您确定特定包的位置:(details).__path__ $ python -c "import setuptools as _; print(_.__path__)" ['/usr/lib/python2.7/dist-packages/setuptools']
-
可让您确定特定模块的位置:(difference).__file__ $ python3 -c "import os as _; print(_.__file__)" /usr/lib/python3.6/os.py
-
运行
pip show
以显示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