mirror of
https://github.com/astral-sh/uv.git
synced 2025-08-27 05:54:11 +00:00

- Adds a collapsible section for the project concept - Splits the project concept document into several child documents. - Moves the workspace and dependencies documents to under the project section - Adds a mkdocs plugin for redirects, so links to the moved documents still work I attempted to make the minimum required changes to the contents of the documents here. There is a lot of room for improvement on the content of each new child document. For review purposes, I want to do that work separately. I'd prefer if the review focused on this structure and idea rather than the content of the files. I expect to do this to other documentation pages that would otherwise be very nested. The project concept landing page and nav (collapsed by default) looks like this now: <img width="1507" alt="Screenshot 2024-11-14 at 11 28 45 AM" src="https://github.com/user-attachments/assets/88288b09-8463-49d4-84ba-ee27144b62a5">
51 lines
2 KiB
Markdown
51 lines
2 KiB
Markdown
# Building distributions
|
|
|
|
To distribute your project to others (e.g., to upload it to an index like PyPI), you'll need to
|
|
build it into a distributable format.
|
|
|
|
Python projects are typically distributed as both source distributions (sdists) and binary
|
|
distributions (wheels). The former is typically a `.tar.gz` or `.zip` file containing the project's
|
|
source code along with some additional metadata, while the latter is a `.whl` file containing
|
|
pre-built artifacts that can be installed directly.
|
|
|
|
## Using `uv build`
|
|
|
|
`uv build` can be used to build both source distributions and binary distributions for your project.
|
|
By default, `uv build` will build the project in the current directory, and place the built
|
|
artifacts in a `dist/` subdirectory:
|
|
|
|
```console
|
|
$ uv build
|
|
$ ls dist/
|
|
example-0.1.0-py3-none-any.whl
|
|
example-0.1.0.tar.gz
|
|
```
|
|
|
|
You can build the project in a different directory by providing a path to `uv build`, e.g.,
|
|
`uv build path/to/project`.
|
|
|
|
`uv build` will first build a source distribution, and then build a binary distribution (wheel) from
|
|
that source distribution.
|
|
|
|
You can limit `uv build` to building a source distribution with `uv build --sdist`, a binary
|
|
distribution with `uv build --wheel`, or build both distributions from source with
|
|
`uv build --sdist --wheel`.
|
|
|
|
## Build constraints
|
|
|
|
`uv build` accepts `--build-constraint`, which can be used to constrain the versions of any build
|
|
requirements during the build process. When coupled with `--require-hashes`, uv will enforce that
|
|
the requirement used to build the project match specific, known hashes, for reproducibility.
|
|
|
|
For example, given the following `constraints.txt`:
|
|
|
|
```text
|
|
setuptools==68.2.2 --hash=sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a
|
|
```
|
|
|
|
Running the following would build the project with the specified version of `setuptools`, and verify
|
|
that the downloaded `setuptools` distribution matches the specified hash:
|
|
|
|
```console
|
|
$ uv build --build-constraint constraints.txt --require-hashes
|
|
```
|