HOWTO · Python

Python 包安装在哪里

本教程演示如何查找安装 python 包的目录

Python 中的包可以定义为包含 Python 文件的目录。这些文件通常是 Python 模块。

随着程序变得越来越大和越来越复杂,类似的模块被放置在一个包中,这有助于使程序更易于管理并具有更好的可读性。这种方法通常称为模块化编程,包有助于实现它。

文件 __init__.py 必须包含在目录中,以便 Python 将其视为包。该文件通常包含包的初始化代码,但可以留空。

本教程将讨论查找安装 python 包的目录的不同方法。

使用 pip 命令列出已安装的软件包

在 Python 中,包可以在全局和本地安装。

一个包在全局安装时可供系统中的所有用户使用。相同的包在本地安装时,仅对手动安装它的用户可用。

默认情况下,pip 命令会全局安装软件包。

以下代码使用 pip 命令列出全局安装的软件包。

# we can also use "pip list command"
pip freeze

尽管默认情况下,pip 命令会全局安装软件包,但也可以使用此命令查看本地手动安装的软件包。

以下代码使用 pip 命令列出本地安装的软件包。

# we can also use "pip list --user"
pip freeze --user

使用 conda 命令列出本地安装的软件包

此方法仅适用于使用 Anaconda IDE 的程序员。可以在 conda 环境中列出本地安装的包。要执行此操作,我们只需在 Anaconda 提示符中编写一行代码。

以下代码使用 conda 列出本地安装的软件包。

conda list

使用 python 命令列出已安装的软件包

python 命令可用于查找包站点目录。

全球网站套餐

发现全局站点包列在 sys.path 中。

以下代码使用 python 命令列出全局安装的软件包。

python -m site

site 模块也可以与 python 命令一起使用,以获得更好、更简洁的包列表。此方法使用 site 模块中的 getsitepackages()

以下代码使用 python 命令和 site 模块列出全局安装的软件包。

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

请注意 getsitepackages() 函数在 virtualenv 中不可用。

本地安装的软件包

本地包安装在 per-user 站点包目录 (PEP 370) 中。

以下代码使用 python 命令列出本地安装的软件包。

python -m site --user-site

使用 distutils.sysconfig 模块列出已安装的软件包

distutils 包可用于提供在 Python 安装中安装和构建附加模块的功能。在这种情况下,它也可用于列出包。

以下代码使用 distutils.sysconfig 列出全局安装的软件包。

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

唯一的缺点是它会将我们指向 dist-packages 或操作系统自动安装的软件包的目录。

使用 sysconfig 模块列出已安装的软件包

在 Python 3 及更高版本中,sysconfig 模块可用于列出已安装的软件包。

不要将 sysconfig 模块与上面提到的 distutils.sysconfig 子模块混淆。后者是一个完全不同的模块,它在此处使用的 get_paths 函数中存在缺陷。

以下代码使用 sysconfig 模块列出已安装的软件包。

python -c "import sysconfig; print(sysconfig.get_path('purelib'))"

我们在这里使用 purelib 路径,它是标准 Python 包的安装位置,并借助 pip 等工具。