Linux下用pip查看已安装Python包的版本

纸上星河
纸上星河
发布时间:2026-10-23| 4人浏览过
原创

在 Linux 终端中查看已安装 Python 软件包的版本,最常用的两种直接方式是:通过 pip show <包名> 查看指定软件包的详细元信息(直接提取精确版本号),以及通过 pip list 列出当前 Python 环境中所有已安装的软件包及其对应版本。在多 Python 版本共存或使用虚拟环境的 Linux 服务器上,推荐使用 python3 -m pip <子命令> 的显式形式,以确保查询操作精准绑定到目标 Python 解释器。

一、精确查看指定包的版本信息(pip show)

当开发者已知某个具体依赖包的名称,需要验证其是否已安装以及当前版本时,pip show 是最直接高效的命令。该命令会读取包元数据并输出包括名称、版本号、摘要、安装路径及依赖关系在内的完整清单。

# 语法:查看指定包的详细信息
pip show requests

在标准 Linux 终端中执行后,典型的输出结果如下所示:

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/dist-packages
Requires: certifi, charset-normalizer, idna, urllib3
Required-by: docker, Sphinx

输出中第二行 Version: 2.31.0 即为当前环境中该包的确切版本。此外,Location 字段同样十分关键,它指明了该库在文件系统中的物理安装路径,便于排查该包是位于系统级目录、用户个人目录(~/.local)还是特定的虚拟环境目录中。

在编写自动化运维脚本或 CI/CD 流程时,如果仅需要获取纯净的版本号文本,可以结合文本处理工具过滤输出:

# 使用 grep 和 awk 快速提取纯版本号
pip show requests | grep -i "^Version:" | awk '{print $2}'

# 示例输出:
# 2.31.0
Linux下用pip查看已安装Python包的版本
图 1:使用 pip show 查询单个 Python 包版本的操作流程与信息结构

二、查看当前环境中所有包的版本(pip list 与 pip freeze)

当需要纵览当前 Python 环境中安装的所有第三方库,或者进行批量排查时,可以使用 pip list。该命令以对齐表格的形式清晰展现每个包的名称和当前版本号。

# 列出当前环境下所有已安装的包
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
wheel              0.41.2

如果已安装包数量庞大,直接浏览并不方便,可使用 Linux 管道配合 grep 进行大小写不敏感的模糊匹配:

# 模糊检索包含 "req" 的包名及其版本
pip list | grep -i "req"

关键差异:pip list 与 pip freeze 的定位与影响

在 Linux 运维与开发中,读者经常会遇到 pip list 与 pip freeze 这两个看似功能重叠的命令。理解二者的关键差异对于依赖管理至关重要:

  • 格式目标不同:pip list 输出的是人类可读的二维表格,侧重于交互式查阅;而 pip freeze 输出的是符合规范的 package==version 格式,主要供机器解析与重现构建。
  • 包过滤机制不同:pip list 默认完整展示环境内的所有包,包括 pip、setuptools、wheel 等底层基础构建工具;而现代版本的 pip freeze 在输出中默认会自动排除这些环境自带的安装工具,避免将与项目业务无关的底层工具写入 requirements.txt。
  • 可编辑包呈现不同:对于通过 pip install -e . 安装的本地可编辑包(editable packages),pip list 会标明本地源码目录路径,而 pip freeze 会直接输出 VCS 链接或本地路径规范语句。

因此,日常人工核查版本首选 pip list;而在固定项目运行环境、迁移或发布依赖清单时,则应使用 pip freeze > requirements.txt。

Linux下用pip查看已安装Python包的版本
图 2:pip list 与 pip freeze 在输出目标与机制上的关键差异

三、多Python环境与虚拟环境下的精确定位

在 Linux 生产环境中,通常系统自身安装了一个全局 Python(例如 /usr/bin/python3),而项目工程往往运行在独立的虚拟环境(如 venv、virtualenv)或自定义 Python 版本中。如果直接在控制台敲入 pip,调用的可能是环境变量 PATH 中首选的全局 pip,而非当前项目所使用的解释器。

排查规范:使用 which pip 和 which python3 检查二者物理路径是否处于同一目录下。如果路径不一致,说明调用链存在脱节。
# 检查当前环境执行的二进制程序路径
which pip
which python3

为了彻底杜绝环境混淆导致的“查错版本”问题,业界推行的最佳实践是直接使用目标解释器的 -m pip 参数发起查询:

# 确保调用的是目标 Python3 解释器绑定的 pip
python3 -m pip show requests

# 如果使用特定的虚拟环境,直接传入该环境内的 Python 完整路径
/var/www/myproject/venv/bin/python -m pip list

通过 Python 解释器调用模块的形式,能够保证 sys.path 严格从该解释器关联的标准库及 site-packages 目录读取已安装模块,不会受系统级同名命令的干扰。

Linux下用pip查看已安装Python包的版本
图 3:Linux 环境中 Python 解释器、pip 与包存储路径对应架构图

四、常见排查情景与处理建议

在实际操作过程中,读者可能遇到以下两类典型困惑:

1. pip show 显示包已安装,但 Python 脚本提示 ModuleNotFoundError

这种现象在 Linux 服务器上发生率极高,其根本原因是执行脚本所用的 Python 解释器与执行 pip 命令的解释器不一致。例如:用系统全局 pip 安装了库,而脚本是在激活的虚拟环境中运行;或者后台使用 python script.py 运行(实际调用了 Python 2 或另一个 Python 3 安装版本)。

排查方法:在 Python 脚本开头加入以下代码打印环境解释器路径,与终端中的 which pip 进行比对:

import sys
print("当前运行解释器:", sys.executable)
print("模块检索路径:", sys.path)

2. 系统包管理器(apt/yum)安装与 pip 安装同名包的区别

在 Debian/Ubuntu 等发行版中,通过 apt install python3-requests 安装的包由系统的包管理器维护,存放在 /usr/lib/python3/dist-packages;而通过 pip install requests 安装的包通常存放在 /usr/local/lib/python3.x/dist-packages 或 ~/.local/lib/python3.x/site-packages。

当两者共存时,Python 会按照 sys.path 顺序优先导入排在前面的目录版本。若要准确知晓运行时导入的是哪一个文件及版本,可在 Python 交互式环境中直接导入并打印 __file__ 和 __version__:

python3 -c "import requests; print(requests.__file__); print(requests.__version__)"

五、操作速查与命令选择建议

为了便于读者在不同场景下迅速选定适合的命令,下表整理了各种查看操作的特点与典型语法:

操作目标 推荐命令 核心优势
查单个指定包详细版本与路径 pip show <package> 信息全面,含精确版本、存储物理路径与依赖项
脚本自动化提取纯版本号 pip show <package> | grep Version 输出精简,易于接入 Shell 逻辑判断与流程控制
查阅当前环境下所有已安装包 pip list 以表格呈现,便于快速浏览并支持 grep 模糊过滤
导出/比对生产环境依赖版本 pip freeze 输出标准依赖声明格式,自动滤除环境构建冗余
多环境混淆时精准核查 python3 -m pip show <package> 显式绑定目标解释器,确保查验目标与运行环境一致
Linux下用pip查看已安装Python包的版本
图 4:Linux 下查看 Python 包版本方法决策指南
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。