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

如何自动获取Python库setup.py中install_requires的依赖列表?

自动生成Python库setup.py的install_requires并兼容pre-commit的方法

可行工具推荐

  • pigar
    这是目前最靠谱的自动依赖扫描工具,能精准识别项目代码里实际导入的包,还支持直接更新setup.py的install_requires字段,甚至能根据代码里的用法推断合适的版本范围。
    使用步骤:

    1. 安装:pip install pigar
    2. 在项目根目录执行:pigar update,它会自动扫描所有.py文件,更新setup.py里的依赖列表。
    3. 如果有不需要纳入生产依赖的包(比如开发工具),可以在项目根目录创建.pigar_exclude文件,把要排除的包名或路径写进去。
  • pipreqs
    轻量型的依赖扫描工具,适合简单项目。它会生成requirements.txt,你可以把内容直接复制到setup.py的install_requires,或者通过参数指定写入setup.py。
    使用步骤:

    1. 安装:pip install pipreqs
    2. 生成依赖文件:pipreqs --force .(--force覆盖现有requirements.txt)
    3. 手动将requirements.txt里的内容迁移到setup.py的install_requires,或者用pipreqs --force --savepath setup.py直接写入(注意此参数需确认版本支持)。

集成pre-commit实现提交时自动检查/更新

把依赖扫描工具加到pre-commit钩子,每次提交代码时自动执行,确保install_requires和实际代码依赖一致。以pigar为例,配置方式如下:

  1. 在项目根目录创建或修改.pre-commit-config.yaml,添加以下内容:
repos:
-   repo: local
    hooks:
    -   id: pigar-update-deps
        name: Update install_requires with pigar
        entry: pigar update
        language: system
        pass_filenames: false
        always_run: true
        # 可选:只在Python文件变更时触发,取消注释下面一行
        # files: \.(py)$
  1. 安装pre-commit钩子:pre-commit install

之后每次执行git commit时,工具会自动扫描代码并更新setup.py的依赖。如果依赖有变更,钩子会修改setup.py,你需要重新提交修改后的文件。

注意事项

  • 动态导入的依赖(比如用importlib.import_module加载的包)工具无法自动识别,需要手动补充到install_requires。
  • 开发依赖(如pytest、flake8)不要放到install_requires,应该放在setup.py的extras_require的dev字段里,工具一般会自动排除这类包,但最好通过配置文件确认。
  • 首次使用工具后,务必手动检查生成的依赖列表,避免误加无关包或遗漏必要依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:17:17