Document PEP517 difference (#4480)

## Summary
PEP 517 build isolation https://github.com/astral-sh/uv/pull/843 has not
yet been mentioned in the PIP compatibility documentation. Add a section
for it.

## Test Plan
Visual inspection only

## Open Questions
> in most cases, swapping out `pip install` for `uv pip install` should
"just work".

In the first non-trivial case I tried, it worked for a short time and
then [started
failing](https://github.com/astral-sh/uv/issues/4069#issuecomment-2186762048).
Is there any data out there on how many top 100 or top 1000 packages
work with PEP 517 build isolation?

How can someone specify `--no-build-isolation` for just one package/line
in `requirements.txt`?

---------

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
This commit is contained in:
Christopher Covington 2024-06-24 16:41:57 -04:00 committed by GitHub
parent 849478fa91
commit 01515c1332
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 18 additions and 0 deletions

View File

@ -147,6 +147,24 @@ In the future, uv will support pinning packages to dedicated indexes (see: [#171
Additionally, [PEP 708](https://peps.python.org/pep-0708/) is a provisional standard that aims to Additionally, [PEP 708](https://peps.python.org/pep-0708/) is a provisional standard that aims to
address the "dependency confusion" issue across package registries and installers. address the "dependency confusion" issue across package registries and installers.
## PEP 517 build isolation
uv uses [PEP 517](https://peps.python.org/pep-0517/) build isolation by default (akin to `pip install --use-pep517`),
following `pypa/build` and in anticipation of `pip` defaulting to PEP 517 builds in the future ([pypa/pip#9175](https://github.com/pypa/pip/issues/9175)).
If a package fails to install due to a missing build-time dependency, try using a newer version of the package; if the
problem persists, consider filing an issue with the package maintainer, requesting that they update the packaging setup
to declare the correct PEP 517 build-time dependencies.
As an escape hatch, you can preinstall a package's build dependencies, then run `uv pip install` with
`--no-build-isolation`, as in:
```shell
uv pip install wheel && uv pip install --no-build-isolation biopython==1.77
```
For a list of packages that are known to fail under PEP 517 build isolation, see [#2252](https://github.com/astral-sh/uv/issues/2252).
## Transitive direct URL dependencies for constraints and overrides ## Transitive direct URL dependencies for constraints and overrides
While uv does support URL dependencies (e.g., `black @ https://...`), it does not support While uv does support URL dependencies (e.g., `black @ https://...`), it does not support