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

时间:2020-03-06 14:36:43  来源:igfitidea点击:

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

解决方案

从"如何安装Django"文档(尽管这不仅对Django安装很有用),还可以从Shell中执行以下操作:

python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"

出于可读性考虑而格式化(而不是单行使用),其外观如下所示:

from distutils.sysconfig import get_python_lib
print(get_python_lib())

from distutils.sysconfig import get_python_lib
print get_python_lib()

正如其他人指出的那样,distutils.sysconfig具有相关的设置:

import distutils.sysconfig
print distutils.sysconfig.get_python_lib()

...尽管默认的site.py做得有些粗略,解释如下:

import sys, os
print os.sep.join([sys.prefix, 'lib', 'python' + sys.version[:3], 'site-packages'])

(如果常量不同,它还会添加$$ {sys.prefix} / lib / site-python并添加sys.exec_prefix的两个路径)。

也就是说,背景是什么?我们不应该直接弄乱" site-packages"; setuptools / distutils将可以进行安装,并且程序可能在virtualenv中运行,其中pythonpath完全是用户本地的,因此也不应假定直接使用系统站点程序包。

已经提到了get_python_lib函数的添加说明:在某些平台上,不同的目录用于平台特定的模块(例如:需要编译的模块)。如果我们将plat_specific = True传递给该函数,则会获得针对特定平台的软件包的站点软件包。

旁注:如果存在多个site-packages目录(如本文所建议),则建议的解决方案(distutils.sysconfig.get_python_lib())不起作用。它将仅返回主site-packages目录。 ,我也没有更好的解决方案。 Python似乎并不跟踪站点软件包目录,而只是跟踪其中的软件包。