如何找出Python项目未使用的安装包以精简requirements.txt
解决方案
方法1:使用pipreqs自动扫描代码依赖(最常用)
- 安装工具:
pip install pipreqs - 进入项目根目录后执行扫描:
pipreqs ./ --encoding=utf8- 该命令会自动递归扫描所有子目录下的
.py文件,识别所有import语句对应的第三方包,直接生成仅包含项目实际用到的顶层依赖的requirements.txt文件 - 如果本地已经存在旧的
requirements.txt,可以加--force参数强制覆盖:pipreqs ./ --encoding=utf8 --force
- 该命令会自动递归扫描所有子目录下的
- 注意:如果你的代码里存在动态导入(比如通过
importlib、__import__实现的导入),这类导入pipreqs无法自动识别,需要手动补充到依赖列表中
方法2:使用pigar实现更精细化的依赖排查
pigar相比pipreqs功能更完善,还支持追溯每个依赖被使用的具体文件位置,适合需要核对的场景:
- 安装工具:
pip install pigar - 生成依赖列表:
pigar generate - 如需查询特定包的使用位置,执行:
pigar show <包名>,比如pigar show flask就能看到项目中哪些文件导入了flask
方法3:结合依赖树工具手动核对(适合需要精准控制的场景)
如果你需要自己核对所有依赖的引用关系,可以结合pipdeptree使用:
- 安装工具:
pip install pipdeptree - 执行命令生成完整依赖树:
pipdeptree- 输出中没有被其他包依赖的就是顶层安装包,你可以把这些顶层包和你代码里实际导入的包逐一比对,剔除从未被导入的部分,再保留对应的子依赖即可
最终校验步骤
生成干净的依赖列表后,建议做一次完整性校验:
- 新建一个空白虚拟环境
- 安装你生成的
requirements.txt:pip install -r requirements.txt - 跑通项目所有功能和测试用例,确认没有
ModuleNotFoundError报错,避免遗漏动态导入、可选功能依赖的包
内容的提问来源于stack exchange,提问作者Nathan Wailes
相关产品推荐
相关产品推荐

