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

Python包构建疑问:setup.cfg依赖确定与工具选择

Python包开发常见问题解答

问题1:setup.cfg中install_requires的依赖确定及最佳实践

核心逻辑

install_requires仅需列出你的包运行时必须依赖的第三方包,不需要包含requirements.txt里的所有内容。两者定位完全不同:

  • requirements.txt是开发环境专用,通常包含运行依赖、开发测试类依赖(如pytest、black),甚至会锁定精确版本号,目的是保证开发团队环境一致。
  • install_requires是给最终用户的配置,用户安装你的包时,pip会自动拉取这些依赖,只需要包含代码运行时直接import的包即可。

最佳实践

  • 只列必需依赖:比如你的代码明确用到pandas,就把它加进去;开发测试时用的工具包,绝对不要放在这里。
  • 合理设置版本范围:避免写死精确版本(如pandas==1.5.3),建议用宽松约束(如pandas>=1.0,<2.0),既保证兼容性,又不给用户环境造成过度限制。
  • 拆分非核心依赖:把开发、测试、文档相关的依赖单独拆分,比如在setup.cfg里用extras_require:
    [options.extras_require]
    dev =
        pytest>=7.0
        black>=23.0
    
    或者单独维护requirements-dev.txt,供开发人员自行安装。
  • 禁止直接复制requirements.txt内容:否则会把你的开发依赖强制安装给所有用户,造成不必要的依赖冗余。

问题2:最新Python包构建工具推荐

Python官方列出的Hatchling、setuptools、Flit、PDM均为合规工具,不同工具适配不同场景,当前主流推荐如下:

  • Hatchling:
    现代包构建的首选之一,完全基于pyproject.toml标准,内置虚拟环境管理、包构建、发布全流程,配置简洁直观,支持多版本Python测试,功能全面且开箱即用,适合绝大多数新包开发场景。

  • Flit:
    轻量级工具,专注纯Python包的快速构建,配置极简,仅需pyproject.toml就能完成核心配置,无多余复杂功能,适合开发结构简单的小型Python库。

  • PDM:
    集成包构建、依赖管理、虚拟环境管理的一站式工具,体验类似前端的npm/yarn,支持现代Python包标准,适合既开发包又管理项目依赖的场景,尤其适配大型项目。

  • setuptools:
    老牌工具,兼容性极强,支持几乎所有Python版本和复杂构建需求(如C扩展打包),如果维护遗留项目或需要高度定制化构建流程,仍可选用,但新项目更推荐前三者。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 20:40:27