跳转至

构建发行版

若要将项目分发给他人(例如,上传到 PyPI 等索引),则需要将其构建为可分发的格式。

Python 项目通常以源发行版(source distributions,sdists)和二进制发行版(binary distributions,wheels)两种形式分发。前者通常是一个 .tar.gz.zip 文件,包含项目的源代码以及一些额外的元数据,而后者是一个 .whl 文件,包含可直接安装的预构建工件。

Important

使用 uv build 时,uv 充当 构建前端,仅确定要使用的 Python 版本并调用构建后端。构建的详细信息,如包含的文件和发行版文件名,由构建后端确定,如在 [build-system] 中所定义。有关构建配置的信息,可以在相应工具的文档中找到。

使用 uv build

uv build 可用于为项目构建源发行版和二进制发行版。默认情况下,uv build 将在当前目录中构建项目,并将构建的工件放置在 dist/ 子目录中:

$ uv build
$ ls dist/
example-0.1.0-py3-none-any.whl
example-0.1.0.tar.gz

可以通过向 uv build 提供路径来在其他目录中构建项目,例如 uv build path/to/project

uv build 首先会构建一个源发行版,然后从该源发行版构建一个二进制发行版(wheel)。

可以使用 uv build --sdist 限制 uv build 仅构建源发行版,使用 uv build --wheel 限制其仅构建二进制发行版,或者使用 uv build --sdist --wheel 从源构建这两种发行版。

构建约束条件

uv build 接受 --build-constraint 参数,该参数可用于在构建过程中限制任何构建需求的版本。结合 --require-hashes 参数使用时,uv 会强制要求用于构建项目的需求与特定的已知哈希值匹配,以确保可重复性。

例如,给定以下 constraints.txt 文件:

setuptools==68.2.2 --hash=sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a

运行以下命令将使用指定版本的 setuptools 构建项目,并验证下载的 setuptools 发行版是否与指定的哈希值匹配:

$ uv build --build-constraint constraints.txt --require-hashes