前言
说实话,做 Python 项目时,我也经常被一堆「环境、依赖、打包、发布」的事儿搞得头大。装了虚拟环境、装了依赖、又要写 setup.cfg、pyproject.toml,还有 CI/CD 那些乱七八糟的配置……弄得都想直接把代码丢进云端,让它自己跑。后来偶然刷到 Hatch,感觉像是给我装了个「自动驾驶」的开关,下面就跟大家聊聊它到底是个什么玩意儿
Hatch 是什么?
Hatch(全称 Hatch – Modern Python Project Manager)是一款 现代、可扩展的 Python 项目管理工具。它把「环境管理」「构建系统」「版本发布」「静态分析」这些常见需求统统整合进一个 CLI,配合一套统一的 pyproject.toml 配置文件,做到 开箱即用、可定制、速度快。
小贴士:Hatch 采用 Material for MkDocs 编写的文档,放在 GitHub Pages 上,想查资料点进去就能看到漂亮的页面。
它解决了哪些痛点?
| | |
| 手动 venv + pip install -r requirements.txt,每次切换都要重新装 | hatch env create |
| 各种 setup.py、setup.cfg、pyproject.toml,版本冲突 | |
| 手动 twine upload,版本号要自己改,容易踩坑 | hatch publish |
| 分别跑 flake8、mypy、ruff,配置不统一 | 内置 ruff、mypy,默认 sane defaults,一键 hatch run lint |
| 各种 GitHub Actions 脚本,需要自己写命令 | Hatch 自带 CI 插件,配合 hatch run,只要几行 YAML 就搞定 |
| 每次 pip install、pytest 都要等待 | CLI 响应快,整体比同类工具 2~3 倍,尤其配合 UV 更快 |
安装 & 快速上手
前置:确保系统已经装了 Python(≥3.8)和 pip。
# 1️⃣ 全局安装 Hatch(推荐用 pipx,保持环境干净)
pip install --user pipx
pipx install hatch
# 2️⃣ 创建新项目(Hatch 自带模板)
hatch new my-awesome-project
cd my-awesome-project
# 3️⃣ 初始化虚拟环境
hatch env create
# 4️⃣ 安装依赖(编辑 pyproject.toml 中的 dependencies)
hatch env run pip install -r requirements.txt # 也可以直接 hatch env run pip install <pkg>
# 5️⃣ 运行测试
hatch run test
# 6️⃣ 打包 & 发布
hatch build
hatch publish
小技巧:hatch run <script> 可以直接执行 pyproject.toml 里自定义的脚本,省去写 make 或 invoke。
优点 & 缺点速览
优点
- • 一站式:环境、构建、发布、lint、test 全部在同一个 CLI 里。
- • 可扩展:插件机制,想要加自定义脚本、CI 步骤都能写插件。
- • 速度:默认使用 UV,比
pip 快几倍;CLI 响应也很快。 - • 配置统一:所有配置信息集中在
pyproject.toml,不再散落各处。 - • 文档友好:Material MkDocs 版文档,美观且搜索友好。
缺点
- • 学习成本:第一次接触需要熟悉
pyproject.toml 的结构,稍微有点门槛。 - • 生态相对年轻:相比
poetry、setuptools,社区插件和案例稍少。 - • 兼容性:在极端老项目(只支持 Python 2)上基本无用。
小结
总的来说,Hatch 就像是 Python 项目管理的「瑞士军刀」——把常见的痛点都收进一个工具里,尤其适合 从零开始 的新项目或想 统一团队工作流 的团队。它的速度、可扩展性以及统一的配置方式让人爱不释手,唯一要注意的就是先花点时间熟悉它的配置文件结构,后面就省心省力了。
如果你正为「环境碎片化」或「发布流程繁琐」抓狂,强烈推荐试试 Hatch,或许会让你重新爱上写 Python。
项目地址: https://github.com/pypa/hatch