You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何精简Python的requirements.txt?仅保留顶层依赖

嘿,这个场景太熟悉了!刚转Python开发的时候,我也是直接用pip freeze导出所有依赖,结果requirements.txt里塞满了各种子依赖,不仅冗余,还容易在部署时出问题。要提炼出只包含顶层依赖的需求文件,这几个方法亲测好用:

方法1:用pipreqs扫描项目(最省心)

pipreqs会自动遍历你项目里的所有Python文件,识别出代码里实际导入的顶层依赖,完全不用手动梳理。步骤很简单:

  • 先安装工具:pip install pipreqs
  • 切换到你的项目根目录,执行:pipreqs .
  • 如果已经有旧的requirements.txt,想覆盖的话加--force参数:pipreqs . --force
  • 要是遇到编码问题,指定编码格式:pipreqs . --encoding=utf8

这个工具的好处是精准,只会把你代码里用到的包列出来,那些没用的依赖根本不会出现在结果里。

方法2:用pip-tools做依赖管理

如果你的项目需要更严谨的依赖版本控制,pip-tools是个不错的选择。它通过两个文件来管理:

  1. 先创建一个requirements.in文件,手动把你确定的顶层依赖写进去(比如flask、requests,不用写版本号也可以)
  2. 安装pip-tools:pip install pip-tools
  3. 执行pip-compile requirements.in,它会自动解析顶层依赖的版本约束,生成规范的依赖文件。如果你只想保留顶层依赖,requirements.in本身就可以作为精简版的需求文件来使用。
方法3:手动梳理(适合小型项目)

如果你的项目代码量不大,直接看代码里的import语句就行:

  • 把所有import xxx或from xxx import里的顶级包名列出来(比如import pandas里的pandas,from sqlalchemy import ...里的sqlalchemy)
  • 然后逐个用pip show <package>确认这些是顶层依赖,没有被其他包引入
  • 最后把这些包名整理到新的requirements.txt里,还可以加上你需要的版本号

额外提醒

不管用哪种方法,一定要在干净的虚拟环境里操作!先创建一个新的虚拟环境,安装你提炼出的顶层依赖,运行项目测试没问题,再导出需求文件,这样能避免混入全局环境里的无关依赖。

内容的提问来源于stack exchange,提问作者urag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 00:22:55