怎么查看Python已安装的第三方库及版本信息

远山来客
远山来客
发布时间:2026-10-20 | 3人浏览过
原创
查看 Python 已安装的第三方库及版本信息主要有两种使用场景:在终端命令行中排查环境,或者在 Python 脚本运行时动态获取。最常用且直接的命令是 pip list(批量查看所有库与版本)和 pip show <库名>(查看单个库的详情与路径);在 Python 代码内部,推荐使用标准库 importlib.metadata.version('库名')。掌握这些工具不仅能快速确认库是否安装,还能有效解决多 Python 环境下的依赖错位问题。
怎么查看Python已安装的第三方库及版本信息
图 0:Python 第三方库及版本信息查询的三大常见维度

一、命令行全量查看:批量列出所有已安装的库

在日常开发和运维中,最直接的方式是在操作系统终端(Windows 的命令提示符/PowerShell,或者 macOS/Linux 的 Terminal)中运行 pip 相关命令。

1. 格式化表格显示:pip list

执行 pip list 会以两列整齐的表格形式,按字母顺序列出当前 Python 环境下安装的所有包名称和对应版本号:

pip list
Package Version ------------------ --------- certifi 2023.7.22 charset-normalizer 3.2.0 idna 3.4 pip 23.2.1 requests 2.31.0 setuptools 68.0.0 urllib3 2.0.4

如果希望以 JSON 格式输出,方便脚本自动化解析,可以使用 --format=json 参数:

pip list --format=json

2. 导出精确版本清单:pip freeze

很多开发者会使用 pip freeze。它输出的形式是 包名==版本号,非常适合直接重定向到 requirements.txt 文件中用于项目依赖归档:

pip freeze
certifi==2023.7.22 charset-normalizer==3.2.0 idna==3.4 requests==2.31.0 urllib3==2.0.4
注意区别:pip list 默认会列出包含 pip、setuptools、wheel 在内的所有底层构建工具;而 pip freeze 通常会主动忽略这些包,只保留用户自己安装的第三方业务库。

3. 在全量列表中过滤指定库

当安装的包数量多达数百个时,肉眼翻找效率较低,可以配合系统的管道命令进行关键字过滤:

  • Windows(PowerShell 或 CMD):使用 findstr 筛选:
    pip list | findstr requests
  • macOS / Linux:使用 grep 筛选:
    pip list | grep requests
怎么查看Python已安装的第三方库及版本信息
图 1:终端命令行查看第三方库及版本的操作流程与选择分支

二、单库深入分析:使用 pip show 掌握元数据

在排查程序报错或依赖冲突时,只知道库的版本号往往是不够的。我们需要知道:这个库被安装在了硬盘的哪个具体目录下?它依赖了哪些其他库?又有哪些库依赖了它?

这时候,pip show <库名> 是最具价值的命令。

pip show requests
Name: requests Version: 2.31.0 Summary: Python HTTP for Humans. Home-page: https://requests.readthedocs.io Author: Kenneth Reitz Author-email: me@kennethreitz.org License: Apache 2.0 Location: /usr/local/lib/python3.10/site-packages Requires: certifi, charset-normalizer, idna, urllib3 Required-by: docker, sphinx

关键输出字段的排查价值如下:

  • Version:当前运行环境中该库的实际安装版本号。
  • Location:该库在硬盘中的实际解压与安装路径(site-packages 所在位置)。如果机器上装了多个 Python,可以通过这个路径立刻确定调用的到底是系统 Python、Anaconda 还是 Virtualenv。
  • Requires:本库运行必须依赖的其他第三方库。如果这里列出的库缺失,导入时就会报错。
  • Required-by:有哪些其他的库依赖了当前库。如果要卸载或者升级某个库,先看这个字段,可以避免破坏上层依赖。

如果需要查看该库具体向系统写入了哪些 .py 文件或可执行脚本,还可以加上 -f(或 --files)参数:

pip show -f requests
怎么查看Python已安装的第三方库及版本信息
图 2:pip show 关键字段及其在问题排查中的指导作用

三、代码内部动态查看:在 Python 运行时获取版本

在编写自动化脚本、插件系统或需要针对不同库版本兼容不同 API 时,我们通常需要在 Python 代码内部直接读取安装包的版本号。

1. 现代官方标准做法:importlib.metadata(Python 3.8+)

自 Python 3.8 起,官方内置了 importlib.metadata 标准库模块。这是目前最推荐的做法,它有两大显著优势:

  • 不需要 import 目标包本身:通过读取包的元数据文件即可获得版本,避免了因为导入重量级大包(如 TensorFlow、PyTorch)而消耗大量内存或触发依赖初始化的开销。
  • 官方标准库:无需额外安装任何第三方依赖。
from importlib.metadata import version, PackageNotFoundError

try:
    pkg_ver = version("requests")
    print(f"requests 已安装,版本为: {pkg_ver}")
except PackageNotFoundError:
    print("requests 库尚未安装!")

如果希望遍历当前运行环境中所有已安装的库名称及版本,可以使用 distributions():

from importlib.metadata import distributions

# 打印所有已安装包及版本
for dist in distributions():
    print(f"{dist.metadata['Name']} == {dist.version}")

2. 传统属性做法:__version__ 属性

很多第三方库会在自己的顶层包命名空间中定义 __version__ 属性:

import requests
print(requests.__version__)
局限性提醒:__version__ 并不是 Python 官方语言层面的强制约束,仅属于社区约定俗成的规范。虽然大部分流行库(如 numpy、pandas、requests、django)都支持,但仍有少数库没有定义该属性,或者将其定义在子模块中。因此,在编写通用检测逻辑时,优先推荐 importlib.metadata.version()。
怎么查看Python已安装的第三方库及版本信息
图 3:外部命令行扫描与代码运行时元数据探测机制对比

四、避坑指南:为什么查到了库,代码跑起来却报 No module named?

在所有关于 Python 库版本查看的问题中,最高频的困扰往往是:“在终端执行 pip list 看到某个库明明存在,但一运行 .py 文件就报 ModuleNotFoundError。”

产生这一现象的本质原因,通常是操作系统的环境变量中存在多个 Python 解释器,终端里的 pip 和当前脚本执行的 python 指向了不同的安装路径。

1. 核心解决方案:使用解释器绑定语法

避免多环境混淆的“黄金法则”是:永远不要单独输入裸命令 pip,而是显式使用 python -m pip。

# 绑定当前具体的 python 解释器执行查询
python -m pip list

# 查看指定库的版本与详情
python -m pip show requests

通过在前面加上 python -m,可以保证调用的是当前指定 python 对应的那个 pip,从而确保查到的安装列表与代码执行时加载的库完全一致。

2. 确认当前 Python 和 pip 的实际物理路径

如果系统安装了多个 Python(例如系统自带 Python、官网下载的 Python 3.11、Anaconda、VS Code 虚拟环境),建议先查明路径:

  • Windows 终端:
    where python
    where pip
  • macOS / Linux 终端:
    which python3
    which pip3
  • 在 Python 交互式环境中确认执行路径:
    import sys
    print(sys.executable)

3. 虚拟环境(Virtual Environment)的激活确认

如果你正在使用 venv 或 conda:

  • 使用 venv 时,确保命令行提示符最前面带有 (venv) 或虚拟环境文件夹名。未激活状态下执行 pip list 看到的是全局库,而激活后看到的才是当前隔离项目的专属库。
  • 如果使用 Anaconda / Miniconda,可以使用 conda 专用命令快速查看:
    conda list

五、常用查询场景与速查参考

为了便于在不同业务场景下快速做出选择,下表整理了各种查看需求所对应的最佳实践命令:

查询目标 推荐命令 / 代码 输出特点与适用场景
列出所有已安装库与版本 python -m pip list 整齐对齐的表格形式,适合终端快速排查
导出项目依赖清单 pip freeze > requirements.txt 输出 包名==版本,便于交付与在新机器上复现
查询单个库的详细信息 pip show <库名> 包含真实物理路径(Location)、依赖与被依赖关系
查询单个库安装的具体文件 pip show -f <库名> 列出该包包含的全部具体文件及所在相对路径
在终端过滤查找指定库 pip list | grep <库名>(Linux/Mac)
pip list | findstr <库名>(Win)
当已安装库数量较多时,免去翻页查找的麻烦
在 Python 代码中动态获取 importlib.metadata.version('库名') 无需导入库本身即可获取版本,官方推荐标准写法
Conda 环境下查看全部库 conda list 同时展示通过 pip 和 conda 安装的混合依赖清单
怎么查看Python已安装的第三方库及版本信息
图 4:Python 第三方库及版本信息查询决策树与综合指南
相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表