Discover and prefer the parent interpreter when invoked with python -m uv (#3736)

Closes #2222
Closes https://github.com/astral-sh/uv/issues/2058
Replaces https://github.com/astral-sh/uv/pull/2338
See also https://github.com/astral-sh/uv/issues/2649

We use an environment variable (`UV_INTERNAL__PARENT_INTERPRETER`) to
track the invoking interpreter when `python -m uv` is used. The parent
interpreter is preferred over all other sources (though it will be
skipped if it does not meet a `--python` request or if `--system` is
used and it belongs to a virtual environment). We warn if `--system` is
not provided and this interpreter would mutate system packages, but
allow it.
This commit is contained in:
Zanie Blue 2024-05-22 12:34:24 -04:00 committed by GitHub
parent b92321bd2d
commit 5fe891082d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 296 additions and 40 deletions

View file

@ -31,6 +31,9 @@ def _run() -> None:
if venv:
env.setdefault("VIRTUAL_ENV", venv)
# Let `uv` know that it was spawned by this Python interpreter
env["UV_INTERNAL__PARENT_INTERPRETER"] = sys.executable
if sys.platform == "win32":
import subprocess