菜单
小墨

小墨

RapidOCR打包演进之路:从setup.py到pyproject.toml的实践探索

在Python项目开发中,打包系统的选择直接影响着项目的可维护性和用户体验。对于像RapidOCR这样的开源项目而言,如何实现自动化版本号管理、简化下游构建流程,是持续迭代过程中必须面对的重要课题。本文将分享RapidOCR从传统setup.py迁移到pyproject.toml的完整实践过程,探讨新方案如何优雅地解决过往的痛点。

传统打包方式的核心挑战

## 传统打包方式的核心挑战

pyproject.toml方案的技术优势

回顾RapidOCR的打包演进历程,自项目发布wheel包以来,一直采用setuptools进行打包管理。在这一过程中,自动化版本号成为打包系统的核心需求——即根据Git标签自动生成版本号,而非手动维护。 为实现这一目标,早期方案通过GitHub Actions在打标签时获取tag信息,并传递给setuptools来完成版本号的自动化注入。这种方案虽然在一定程度上满足了需求,但也暴露出明显的局限性:当下游用户希望自行构建wheel包时,需要完整复制CI流程中的复杂步骤,理解其中各个环节的关联逻辑,这无疑增加了使用门槛和理解成本。同时,setup.py文件中耦合了大量业务逻辑,使得打包这一步变得异常复杂。

每一个问题的出现,都是让我们变得更好的契机。

“技术感悟”
积墨 AI 核心产品

积墨 AI 智能体开发平台

快速搭建具备商业价值的 AI 智能体,支持复杂工作流编排、50+ 主流模型接入与私有化部署。

新打包方案的核心实现

基于pyproject.toml的打包方案带来了显著的改进。通过引入setuptools-scm库,可以直接从Git标签自动提取版本号,完全告别了手动维护版本的繁琐流程。配置文件形式的声明让打包逻辑更加清晰,也便于版本管理。 新方案成功解决了此前需要将rapidocr目录包裹一层才能正确导入的问题,使得项目结构更加合理。更重要的是,模型下载等辅助流程可以被清晰地分离出去,不再与打包核心逻辑混在一起。通过tools/prepare_wheel_assets.py脚本,模型资产的准备过程变得独立可控。

总结与展望

## 下游构建的简化实践

如有侵权,请联系删除。

#Python打包#pyproject.toml#setuptools-scm#CI/CD#OCR
分享文章

相关文章推荐

试用咨询
企业微信二维码

扫码添加企业微信