Python 项目构建¶
约 231 个字 1 张图片 预计阅读时间 1 分钟
现代 Python 项目基本围绕 PEP 517/518/621:
- PEP 518:构建工具写在哪里?构建前要先装什么?
- PEP 517:pip / uv 应该如何“调用构建后端”?
- PEP 621:项目元数据应该如何标准化地写?
常见 python project 构建配置文件¶
- pyproject.toml:项目元数据 + 构建配置的统一入口
- build backend(构建后端):真正构建项目二进制包的实现(setuptools / hatchling / flit / poetry-core…)
- build frontend(构建前端):调用后端去构建 wheel/sdist 的工具(python -m build、pip、uv 等)
- installer(安装器):把 wheel 装进环境里(pip、uv)
- publisher(发布工具):把包上传到 PyPI(twine 等)
- env manager(环境管理):创建/管理虚拟环境(venv、uv、conda)
[build-system]
- 构建后端使用什么工具
- 构建时的依赖需要什么
[project]
- 项目元数据:name, version, description...
- 运行时依赖,python 版本要求
- 这些依赖会在安装项目二进制的的时候被解析并安装(比如 pip install . 或 uv pip install -e .)
[tools.uv.extra-build-dependencies]
当 uv 需要构建 flash-attn(比如没有合适 wheel、只能源码编译)时,uv 会在它的 build isolation 环境里额外装上 torch,避免 flash-attn 在构建阶段 import torch 失败