You need to enable JavaScript to run this app. 无需提前创建虚拟环境,如何生成仅含实际使用库的requirements.txt?
优惠活动
大模型
产品
解决方案
定价
更多

无需提前创建虚拟环境,如何生成仅含实际使用库的requirements.txt?

无需提前搭建虚拟环境的精准依赖检测方案

核心问题匹配

Colab、AWS SageMaker这类开箱即用的预装环境虽然用着方便,但直接导出依赖时会带出大量项目根本没用到的预装库,而现有工具的能力缺口刚好踩中两个高频漏判场景:

  • 像watermark这类工具默认只采集当前全局命名空间直接导入的顶层库,识别不到通配导入、嵌套间接导入的依赖
  • 对jupyter扩展、服务端插件这类不通过普通Python import链路加载的组件完全无感知

可直接在现有预装环境运行的落地方法

完全不需要额外新建隔离虚拟环境,在日常使用的现成会话里就能完成全链路检测:

  • 运行时全链路导入追踪方案
    放弃静态扫描代码找import语句的思路,在你完整跑通项目全流程(从数据加载、模型推理到最终服务启动)的过程中,拦截所有被Python解释器实际加载的第三方模块,自动匹配对应的pip包名和准确版本,同时自动采集当前环境启用的jupyter扩展清单。
    实际操作流程:

    1. 打开新的Colab会话后,安装支持运行时监控的依赖收集工具
      !pip install pip-requirements-tracker
      
    2. 在所有项目代码执行前,初始化全局导入监控
      from req_tracker import start_tracking
      start_tracking(include_jupyter_ext=True)
      
    3. 正常执行所有业务操作:升级安装fastai、安装voila、启用voila的jupyter服务扩展、导入fastai视觉模块、跑通完整的项目逻辑
    4. 全流程验证完成后,直接导出生成的精准依赖清单
      from req_tracker import export_requirements
      export_requirements("requirements.txt")
      

    这种方案刚好补上watermark的两个能力短板:

    • 不会因为你用from fastai.vision.all import *的通配导入方式就漏判fastai本身的依赖项
    • 会自动识别voila这类通过jupyter扩展机制启用、没有走普通Python import流程的服务类依赖,不需要手动补录清单
  • 零额外工具的环境快照对照法
    如果不想安装第三方监控工具,用两次环境快照比对的方式也能拿到最小依赖集:

    1. 刚打开空白Colab会话、还没安装任何项目依赖时,先导出一份当前环境的全量预装包清单
      pip freeze > base_snapshot.txt
      
    2. 后续正常安装项目所需的所有依赖、跑通完整业务流程
    3. 流程验证完成后,再导出一份当前环境的全量包清单
      pip freeze > current_snapshot.txt
      
    4. 通过简单的文本差集运算,筛出你手动安装的、以及运行时实际被加载的包,去掉所有预装但没被调用过的冗余项,就能生成可用的requirements.txt

避坑提醒

绝对不要在跑完全部项目流程后直接执行pip freeze导出依赖,这样得到的清单会把环境里所有预装的、哪怕从来没被调用过的库全部列进去,完全失去依赖文件的实际价值。
watermark的设计定位是版本信息展示,而非全链路依赖采集,即便手动指定要检查的包名,也需要人工挨个核对,无法实现自动全量收集的目标。


内容的提问来源于stack exchange,提问作者G. Macia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 11:45:07