我该如何找到Python的site-packages目录的位置?

22 浏览
0 Comments

我该如何找到Python的site-packages目录的位置?

如何找到我的site-packages目录的位置?

admin 更改状态以发布 2023年5月22日
0
0 Comments

>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']

(或者只需使用 site.getsitepackages()[0] 的第一项)

0
0 Comments

有两种类型的site-packages目录,全局和每个用户。

  1. 全局 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"])'
    

  2. 每个用户 site-packages 目录(PEP370)是Python安装您的本地包的位置:

     python -m site --user-site
    

    如果它指向一个不存在的目录,请检查Python的退出状态并参阅python -m site --help以获得说明。

    提示:运行pip list --userpip freeze --user可获得所有已安装的每个用户site-packages的列表。


实用技巧

  • .__path__可让您确定特定包的位置:(details

      $ python -c "import setuptools as _; print(_.__path__)"
      ['/usr/lib/python2.7/dist-packages/setuptools']
    

  • .__file__可让您确定特定模块的位置:(difference

      $ 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
    

0