如何检查requirements.txt中列出的所有包是否在Python项目中被使用
判定requirements.txt中未使用依赖包的方法
常用静态检测工具(推荐优先使用)
- pipreqs:通过扫描项目代码中的显式导入语句,生成项目实际使用的依赖清单。使用方式:
- 安装:
pip install pipreqs - 进入项目根目录执行命令:
pipreqs ./ --encoding=utf8 - 工具会生成新的依赖清单文件,将其与你原有的requirements.txt做对比,即可筛选出未被引用的冗余包。
- 安装:
- deptry:性能更优的依赖检测工具,支持识别间接依赖、开发依赖,可直接输出未使用的依赖项。使用方式:
- 安装:
pip install deptry - 进入项目根目录执行:
deptry . - 直接读取输出结果中标记为「Unused dependencies」的项,即为冗余包。
- 安装:
- pydeps:除了检测使用的依赖外,还可以生成依赖关系链路图,适合需要梳理包引用逻辑的场景。执行
pydeps 你的项目入口文件名即可输出对应依赖分析结果。
注意事项
静态检测工具只能识别显式import的依赖,以下场景的依赖需要人工二次核对:
- 动态导入的包(比如通过
__import__()、importlib模块导入的依赖)- 作为命令行工具调用的包(比如项目脚本中调用了
pytest、flake8等命令,代码中没有显式import的依赖)- 依赖的可选组件(比如
pandas读写Excel需要的openpyxl,代码中不会单独import,但实际功能运行需要)
兜底校验方案
你可以新建一个空白的Python虚拟环境,只安装你筛选出的疑似有用的依赖,然后运行项目的全量测试用例、验证所有核心功能,如果运行全程没有报依赖缺失错误,即可确认未安装的包为冗余依赖。
内容的提问来源于stack exchange,提问作者Marcin
相关产品推荐
相关产品推荐

