使用 uv 打包发布项目,核心步骤是配置 pyproject.toml 元数据、生成构建产物并上传至 pypi。具体做法是确保 pyproject.toml 中正确声明了 [project] 字段及依赖,运行 uv build 生成 .whl 和 .tar.gz 文件,最后通过 uv publish 命令将包推送到仓库。若遇到权限问题,需提前配置好 api token。

如何正确配置 pyproject.toml 以支持 uv 构建
配置 pyproject.toml 是发布的前提,必须包含 name、version 和 description 等必填字段。uv 默认使用 build-backend 为 hatchling 或 setuptools 的构建系统,无需额外安装构建工具即可直接调用 uv build。只需在 [project] 下列出源码路径或依赖,uv 就能自动识别项目结构。

{
"name": "my-package",
"version": "0.1.0",
"description": "A sample package",
"requires-python": ">=3.8",
"dependencies": [
"requests>=2.28"
],
"scripts": {
"my-cli": "my_package.cli:main"
}
}
上述配置定义了包名、版本、Python 版本要求及运行时依赖。若项目包含命令行入口,需在 scripts 中指定模块路径。保存后,uv 即可读取这些元数据进行后续构建。
如何生成并发布构建产物到 PyPI
生成和发布过程分为两步:先构建再上传。uv build 会在 dist/ 目录下生成标准 wheel 和 sdist 文件,验证无误后使用 uv publish 直接推送。该命令会自动处理认证,无需手动调用 twine。若本地未登录,uv 会提示输入 Token 或从环境变量读取。

# 生成构建产物 $ uv build # 查看生成的文件 $ ls dist/ my_package-0.1.0-py3-none-any.whl my_package-0.1.0.tar.gz # 发布到 PyPI $ uv publish
执行 uv build 后,检查 dist/ 目录确认文件已生成。随后运行 uv publish,若环境变量 PYPI_TOKEN 已设置,则静默上传;否则交互式输入 Token。上传成功后,包即对公众可见。
当 pyproject.toml 缺少 version 字段时 uv 会如何处理
若 pyproject.toml 中缺失 version 字段,uv build 会报错并终止构建。因为版本号是 PyPI 发布的强制要求,用于区分不同迭代。此时需手动添加 version = "0.1.0" 或使用动态版本管理插件(如 hatch-vcs)来自动生成。未修复此错误前,无法生成有效的构建产物。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











