如何查询Python包的直接与间接被依赖包?
Python包反向依赖查询方案
你需要的是Python包的**反向依赖(即依赖该包的其他包)**查询能力,对应apt-cache rdepends的功能,可按场景选择以下方案:
场景1:查询当前本地环境中已安装包的反向依赖
方案一:使用第三方工具pipdeptree(最简便,支持直接/间接依赖查询)
- 先安装工具:
pip install pipdeptree - 查询直接反向依赖,以Jinja2为例:
输出会直接列出所有本地已安装的、直接依赖Jinja2的包,比如flask等你装过的上层包。pipdeptree --reverse --packages Jinja2 - 如需查询间接反向依赖(即依赖链上所有用到该包的上层包),增加
--depth参数指定查询深度即可:pipdeptree --reverse --packages Jinja2 --depth 99
方案二:使用pip原生命令(无需安装第三方工具,仅支持直接依赖查询)
执行以下shell命令即可输出本地直接依赖目标包的所有包,替换<目标包名>为你要查的包名即可:
pip list | tail -n +3 | awk '{print $1}' | xargs pip show | grep -E '^Name|Requires' | grep -B1 '<目标包名>' | grep '^Name' | awk '{print $2}'
场景2:查询PyPI全量公开包的反向依赖
如果需要查询整个PyPI平台上所有声明依赖该包的公开项目,可使用pypi-rdepends工具:
- 安装工具:
pip install pypi-rdepends - 执行查询:
pypi-rdepends Jinja2 - 该工具默认返回直接依赖,添加
--recursive参数即可查询间接反向依赖。
内容的提问来源于stack exchange,提问作者Martin Gergov
相关产品推荐
相关产品推荐

