怎么查看Python已安装库的具体版本号
本文详细讲解查看Python已安装第三方库具体版本号的常用方法,涵盖终端命令行(pip show、pip list、python -m pip)与Python代码内部(importlib.metadata、__version__)两种核心途径,并对多环境混淆和包名与导入名不一致等常见问题提供实用解决方案。
pip 工具查询,二是在 Python 脚本或交互式解释器中通过内置模块 importlib.metadata 或库属性读取。选择哪种方式取决于你当前是在配置运行环境还是在编写代码。
一、在命令行中查看(无需进入 Python)
当你正在配置开发环境、调试依赖冲突或者在服务器上排查运行报错时,直接在操作系统自带的命令行终端(Windows 系统的 CMD / PowerShell,macOS 与 Linux 的 Bash / Zsh)中查看是最快速的手段。
1. 精确查看单个库:pip show
如果已经知道目标库的名称,想要直接获取它的具体版本号及安装路径,pip show 是最精准的命令。
pip show requests
在终端中执行后,会返回与该库相关的元数据,其中第二行即为具体版本号:
Version 字段给出的 2.31.0 就是当前环境下所安装 requests 库的准确版本号。此外,下方的 Location 字段同样十分有用,它能帮助你确认该库具体存放在哪一个 Python 目录中。
2. 罗列所有已安装库:pip list
如果你不确定库的具体拼写,或者想整体查看当前环境中所有第三方库及其对应版本,可以使用 pip list:
pip list
命令会以表格形式按字母顺序列出所有包名及版本:
如果安装的包非常多,可以在命令行中通过管道符筛选指定库:
- macOS / Linux:
pip list | grep requests - Windows (PowerShell):
pip list | Select-String requests - Windows (CMD):
pip list | findstr requests
3. 更稳妥的执行方式:python -m pip
许多系统(尤其是同时存在系统自带 Python 和自定义安装 Python,或者开启了多个虚拟环境的机器)经常出现直接运行 pip 调用的并不是当前正使用的 python 的情况。
为了确保查询结果 100% 对应你正在运行的那个 Python 解释器,推荐在命令前明确指定 Python 启动器:
python -m pip show requests
# 或者指定具体的 Python 命令版本:
python3 -m pip show requests
使用 python -m pip 的含义是:“让当前的 python 解释器把它对应的 pip 作为模块运行”。这能有效避免因为系统的环境变量 PATH 顺序错乱而查错环境。
二、在 Python 代码或交互环境中查看
如果你正坐在 Jupyter Notebook、IPython 或者正在编写一段对运行环境有版本依赖检查的代码(例如仅当 pandas >= 2.0.0 时才启用新语法),就需要通过 Python 代码本身来动态读取库版本。
1. 现代标准推荐:importlib.metadata(Python 3.8+)
从 Python 3.8 开始,官方标准库引入了 importlib.metadata 模块。这是目前最规范、最推荐的方式,因为它是通过读取安装包的元数据获取版本的,甚至不需要执行库本身的导入过程(避免了由于直接 import 导致的过慢加载或副作用)。
import importlib.metadata
version = importlib.metadata.version('requests')
print(version)
运行结果示例:
参数注意事项
传递给 importlib.metadata.version() 的字符串必须是该库在 PyPI 上的安装分发包名(Distribution Package Name),而不是 Python 代码里的模块导入名。例如安装 Pillow 库时,参数应写 'Pillow',而不是 'PIL'。
2. 传统通用方式:__version__ 属性
绝大部分知名第三方库在设计时都会遵循 PEP 396 约定,在其根模块的 __init__.py 中定义一个 __version__ 属性。
import requests
print(requests.__version__)
运行结果示例:
这种方式非常直观,适合在命令行中快速敲击单行命令临时核对:
python -c "import requests; print(requests.__version__)"
为什么不能完全依赖 __version__?
__version__ 本质上是第三方库维护者自行维护的一个普通变量,Python 官方解释器并未做强制校验。少数库根本没有定义该属性,若直接调用会触发 AttributeError: module 'xxx' has no attribute '__version__'。在编写严谨的工程代码时,建议优先使用 importlib.metadata.version()。
三、虚拟环境与 Conda 环境下的注意事项
在实际项目开发中,极少直接使用操作系统的全局 Python 环境。若你的项目配置了虚拟环境(venv / virtualenv)或使用了 Anaconda / Miniconda,查看版本前必须先确认环境归属。
1. 针对 Python 自带的 venv 虚拟环境
如果直接在终端敲命令,务必先激活该虚拟环境。激活后,终端提示符前通常会出现形如 (myenv) 的前缀:
- Windows:
.\myenv\Scripts\activate - macOS / Linux:
source myenv/bin/activate
激活后,执行 pip show <库名> 就会指向该虚拟环境。如果不希望激活虚拟环境,也可以直接调用虚拟环境目录内部的 Python 解释器可执行文件:
# macOS / Linux 示例
./myenv/bin/python -m pip show requests
# Windows 示例
.\myenv\Scripts\python.exe -m pip show requests
2. 针对 Conda 环境
Conda 拥有独立的包管理系统。在 Conda 激活的环境下,推荐使用专门的 conda list 命令查看:
# 查看当前激活环境下的特定库
conda list requests
# 查看指定名称环境(例如 test_env)下的特定库,无需先激活
conda list -n test_env requests
conda list 的好处在于它不仅清晰列出版本号,还会标明该包是由 Conda 渠道安装还是后续由 pip 混合安装的(最后一列 Channel 会标出 pypi)。
四、常见易错问题与应对方法
1. 报错:PackageNotFoundError 或 AttributeError
在查询库版本时,开发者最常碰到的两个报错及其根本原因如下:
-
PackageNotFoundError: No package metadata was found for ...
发生在使用importlib.metadata.version('xxx')时。常见原因是你填入了导入名(Import Name)而非安装包名(Distribution Name)。最典型的对照如下表:
| 库功能描述 | 安装包名(给 pip 或 importlib 用) | 代码导入名(用于 import 语句) |
|---|---|---|
| 图像处理库 | Pillow |
import PIL |
| YAML 文件解析 | PyYAML |
import yaml |
| 机器学习库 | scikit-learn |
import sklearn |
| OpenCV 视觉库 | opencv-python |
import cv2 |
| 网页解析 Beautiful Soup | beautifulsoup4 |
import bs4 |
-
AttributeError: module 'xxx' has no attribute '__version__'
该库并未在顶层模块暴露__version__变量。遇到这种情况,改用importlib.metadata.version('包名')即可解决。
2. 明明显示已安装,运行时却报版本过旧或找不到?
这种情况 99% 源于“多 Python 解释器路径混淆”。你在终端执行 pip show 所查的 Python,与你 IDE(如 VS Code、PyCharm)或者执行脚本时使用的 Python 不是同一个路径。
验证方法:在你的 Python 脚本最上方加入以下两行代码,打印出当前实际在运行的 Python 解释器位置和对应的库路径:
import sys
print("当前运行的 Python 路径:", sys.executable)
import requests
print("当前加载的 requests 文件位置:", requests.__file__)
检查打印出的 sys.executable 是否与你在命令行中通过 which python(Windows 下为 where python)查到的一致。若不一致,只需在命令行或 IDE 中将解释器路径切换为统一目标即可。
五、总结:如何选出最适合你的操作方式
为了帮助你在不同工作场景下快速选择最稳妥、高效的版本查看命令,可以参考下方的操作步骤与决策导引图:
按具体任务总结如下:
- 日常终端部署与环境检查:首选
python -m pip show <库名>,不仅能得到准确版本,还能顺带确认物理安装路径。 - 整理项目依赖清单(requirements.txt):直接运行
pip list浏览,或者通过pip freeze输出符合安装规范的包版本行。 - 在 Python 脚本或自动化工具内检查版本:首选 Python 3.8+ 标准库
importlib.metadata.version('<包名>'),无需额外安装任何库,且无模块导入副作用。 - 临时在交互式终端或 Notebook 验证:快速输入
import <模块>; print(<模块>.__version__),简单直接。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









