pip list 是最直接查看当前 Python 环境已安装库的方式,输出包名与版本号的对齐表格;需注意环境隔离(如虚拟环境是否激活)、Python 版本对应(pip/pip3 区分)及 pip 仅管理自身安装的包(不含系统包管理器安装的库)。

用 pip list 查当前环境所有已装库
这是最直接的方式,但要注意它只反映当前 Python 解释器对应环境下的库。运行 pip list 会列出包名和版本号,格式清晰、可读性强。如果系统同时有 Python 2 和 Python 3,pip 可能指向 Python 2 的 pip,此时应优先用 pip3 list 明确查 Python 3 环境。
常见陷阱:
-
pip list不区分全局 vs 虚拟环境 —— 如果没激活虚拟环境,它显示的是系统级或用户级安装的库 - 部分发行版(如 Ubuntu)默认不把
pip3放进 PATH,首次使用前可能需先执行sudo apt install python3-pip - 若提示
command not found: pip,说明 pip 未安装或未配置好,不是“没装库”,而是“没装包管理器”
用 pip freeze 输出适合复现的依赖列表
pip freeze 和 pip list 都列已安装库,但输出格式不同:pip freeze 用 name==version 格式,可直接用于 pip install -r requirements.txt 复原环境;而 pip list 是对齐表格,更适合人工阅读。
注意点:
立即学习“Python免费学习笔记(深入)”;
-
pip freeze默认包含所有可导出的包,包括通过pip install -e .安装的本地开发包(显示为-e /path/to/project) - 它不会过滤掉“非 PyPI 来源”的包(比如 git+https URL 安装的),但也不会自动补全其完整 URL,仅显示解析后的包名
- 如果你只想看非标准包(排除 setuptools、pip 等自带工具),可用
pip freeze --exclude-editable(较新 pip 支持)或手动 grep 过滤
用 pip show <package_name> 查单个库详情
当你要确认某个库是否真的装了、装在哪、依赖了什么,pip show numpy 比翻 pip list 更高效。它返回的信息包括:Name、Version、Location(实际安装路径)、Requires(直接依赖)、Required-by(谁依赖它)。
关键提醒:
-
Location值很重要 —— 若显示路径在/home/xxx/.local/lib/python3.x/site-packages/,说明是用户级安装(pip install --user);若在/usr/lib/python3.x/dist-packages/或/usr/local/lib/...,大概率是系统级或 root 安装 - 如果
pip show报错Package 'xxx' is not installed,不代表没装,可能是名字拼错(比如requests不是request),或该库是通过apt install python3-xxx安装的(这类包不在 pip 管理范围内) - 某些包(如
distro)可能由系统包管理器安装,pip show查不到,但python -c "import distro; print(distro.version())"能正常导入
区分 pip 安装 vs 系统包管理器安装的库
Linux 发行版常把常用 Python 库打包进系统仓库(如 Ubuntu 的 python3-numpy),用 apt install 或 dnf install 安装。这些库不会出现在 pip list 中,但 Python 解释器能 import。要查它们,得用系统包管理命令:
- Debian/Ubuntu:
dpkg -l | grep python3-或apt list --installed | grep python3- - RHEL/CentOS/Fedora:
rpm -qa | grep python3-或dnf list installed | grep python3-
这种双轨制容易导致冲突:比如你用 pip install numpy 升级了 NumPy,但系统更新时又通过 apt upgrade 把它降级回去。所以生产环境建议统一用虚拟环境 + pip,避免混用。
真正容易被忽略的,是 pip 和系统包管理器各自维护独立的安装记录 —— 它们互不感知。你以为 pip list 是“全部”,其实只是 pip 管理的那一部分。


















