Python 包安装在哪里

Vaibhhav Khetarpal 2023年1月30日 2021年7月14日
  1. 使用 pip 命令列出已安装的软件包
  2. 使用 conda 命令列出本地安装的软件包
  3. 使用 python 命令列出已安装的软件包
  4. 使用 distutils.sysconfig 模块列出已安装的软件包
  5. 使用 sysconfig 模块列出已安装的软件包
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 等工具。

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

相关文章 - Python Installation