是否存在将setup.py自动化转换为pyproject.toml的简便方法?
setup.py 转 pyproject.toml 自动化方案
有成熟工具可以直接完成绝大多数转换工作,不需要手动从零编写配置,批量处理多个项目效率很高:
- 专用转换工具
setup-py-to-pyproject是适配性最好的选择,直接通过pip安装后在项目根目录运行即可,能自动识别setup.py里声明的项目名、版本、依赖列表、作者信息、入口脚本、分类标签等所有符合setuptools规范的静态配置,自动生成符合PEP 621标准的pyproject.toml文件;如果遇到运行时生成的动态配置(比如从文件读取版本号、条件判断的平台专属依赖),工具会自动在生成的配置里标记需要手动补全的位置,不会静默丢配置。
常用操作命令:pip install setup-py-to-pyproject # 进入存放setup.py的项目根目录后执行 setup-py-to-pyproject - 如果你的老项目同时用
setup.py+setup.cfg拆分配置,可以用ini2toml工具,它对旧版setuptools配置项的覆盖率很高,能一次性把两份配置的内容合并迁移到pyproject.toml,转换后的格式对setuptools构建后端的兼容性很好。
常用操作命令:pip install ini2toml[full] # 先转setup.cfg的静态配置 ini2toml setup.cfg > pyproject.toml # 再把setup.py里的动态逻辑手动补充到生成文件的[project]相关动态配置段即可
转换完成后必须做两步校验,避免配置遗漏:
- 在项目目录执行
pip install -e .测试可编辑安装,验证依赖安装、命令行入口是否正常工作- 对照原
setup.py检查特殊自定义配置,比如C扩展编译逻辑、自定义构建步骤、私有化源依赖这类非通用配置,这类自定义逻辑自动化工具无法100%识别,需要手动调整补充
如果要批量处理多个维护的项目,写个简单的遍历脚本批量执行转换命令,再逐个做校验即可,整体工作量比手动迁移低80%以上。
内容的提问来源于stack exchange,提问作者user17304108
相关产品推荐
相关产品推荐

