pip show 不显示真实依赖树,应使用 pipdeptree;它动态读取 requires_dist 并递归构建树,支持过滤、json 导出和反向查询,而 pip show -d 仅拼接 requires-dist 字段,常漏依赖且不验证安装状态。

pip show 不显示依赖树,得换命令
pip show 只能查单个包的元信息(比如 Version、Author、Requires),但 Requires 字段往往为空或不完整——尤其在 pip 21.3+ 默认启用 --use-feature=fast-deps 后,很多包的依赖不会被写入该字段。想看真实安装时解析出的依赖关系,必须用其他方式。
推荐用 pipdeptree 查依赖树
这是最直接、最可靠的方案,它基于已安装包的 importlib.metadata(Python 3.8+)或 pkg_resources(旧版)动态读取每个包的 requires_dist,再递归构建树形结构。
- 安装:
pip install pipdeptree - 基础用法:
pipdeptree—— 显示全部已安装包的依赖树 - 查某个包:
pipdeptree --package requests或pipdeptree -p requests - 过滤掉子依赖(只看一级):
pipdeptree -p requests --depth 1 - 导出为 JSON:
pipdeptree --json-tree,方便脚本处理
注意:pipdeptree 默认会把所有包都展开,如果环境里装了几十个包,输出可能很长。加 --reverse 可以查「谁依赖了某个包」,比如 pipdeptree --reverse --package six。
从QuickView趋势笔记生成韩语AI播客包,含双人主持脚本(Callie×Nick)、Gemini多说话人TTS音频、字幕时间轴与渲染修正、缩略图+MP4包装及YouTube标题/描述输出。支持完整版(15~20分钟)和压缩版(5~7分钟)。
pip 22.2+ 内置的 pip show -d 是个伪替代
从 pip 22.2 开始,pip show -d(即 --dependencies)看似支持依赖树,但它只是简单拼接 Requires-Dist 字段,不验证是否实际安装、不解析版本约束、也不递归展开。结果经常漏依赖,甚至显示未安装的可选依赖。
- 例如:
pip show -d pandas可能列出pytz,但如果你没装pytz,它不会报错,也不会告诉你缺失 - 它不处理
extras_require(如requests[security]),也不识别环境标记(如typing-extensions; python_version ) - 所以除非你明确只要看 METADATA 文件里的静态声明,否则别信
pip show -d
遇到循环依赖或版本冲突时 pipdeptree 会报警
如果两个包互相依赖(比如 A→B→A),pipdeptree 会在对应节点标上 (circular);如果某依赖存在多个不兼容版本(如包 X 要 click>=7.0,Y 要 click),它不会自动解决,但会把两个分支都列出来,让你一眼看到冲突点。
- 加
--warn silence可关闭警告(不推荐) - 加
--warn fail让有冲突时返回非零退出码,适合 CI 场景做检查 - 它不修改环境,纯只读分析——这点比
pip check更细,也比pip freeze | xargs pip install安全得多
真正麻烦的是那些通过 setup.py 动态生成依赖、或用 install_requires 外部文件(如 requirements/base.txt)管理的项目——pipdeptree 看不到这些,它只认已安装的包。这种时候得回源码或 pyproject.toml 手动查。










