Skip to content

Commit

Permalink
Add env UV_SYSTEM as alias to --system (#2354)
Browse files Browse the repository at this point in the history
## Summary

Add a new env variable `UV_SYSTEM` as alias for the cli argument
`--system`.
Use cases:
- No need to specify on each uv call inside the docker container the
`--system` flag
- It allows installing and configuring uv in a base container and in the
child containers nobody needs to know if you need the `--system` cli
flag
- The Home Assistant development env can be set up via devcontainer or a
venv. Both use some common scripts. Instead of adding duplicate or
special code to identify the dev container to set the `--system` flag,
it would be nicer to set it via an env variable.

I'm unfamiliar with Rust and tried to add the support by looking at the
code.

## Test Plan

I did test it manually
`UV_SYSTEM_PYTHON=true uv pip install requests`
  • Loading branch information
edenhaus committed Mar 11, 2024
1 parent a292817 commit 85483e8
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 7 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -399,6 +399,10 @@ uv accepts the following command-line arguments as environment variables:
cache for any operations.
- `UV_PRERELEASE`: Equivalent to the `--prerelease` command-line argument. If set to `allow`, uv
will allow pre-release versions for all dependencies.
- `UV_SYSTEM_PYTHON`: Equivalent to the `--system` command-line argument. If set to `true`, uv
will use the first Python interpreter found in the system `PATH`.
WARNING: `UV_SYSTEM=true` is intended for use in continuous integration (CI) environments and
should be used with caution, as it can modify the system Python installation.

In each case, the corresponding command-line argument takes precedence over an environment variable.

Expand Down
49 changes: 42 additions & 7 deletions crates/uv/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -542,7 +542,12 @@ struct PipSyncArgs {
///
/// WARNING: `--system` is intended for use in continuous integration (CI) environments and
/// should be used with caution, as it can modify the system Python installation.
#[clap(long, conflicts_with = "python", group = "discovery")]
#[clap(
long,
conflicts_with = "python",
env = "UV_SYSTEM_PYTHON",
group = "discovery"
)]
system: bool,

/// Allow `uv` to modify an `EXTERNALLY-MANAGED` Python installation.
Expand Down Expand Up @@ -788,7 +793,12 @@ struct PipInstallArgs {
///
/// WARNING: `--system` is intended for use in continuous integration (CI) environments and
/// should be used with caution, as it can modify the system Python installation.
#[clap(long, conflicts_with = "python", group = "discovery")]
#[clap(
long,
conflicts_with = "python",
env = "UV_SYSTEM_PYTHON",
group = "discovery"
)]
system: bool,

/// Allow `uv` to modify an `EXTERNALLY-MANAGED` Python installation.
Expand Down Expand Up @@ -916,7 +926,12 @@ struct PipUninstallArgs {
///
/// WARNING: `--system` is intended for use in continuous integration (CI) environments and
/// should be used with caution, as it can modify the system Python installation.
#[clap(long, conflicts_with = "python", group = "discovery")]
#[clap(
long,
conflicts_with = "python",
env = "UV_SYSTEM_PYTHON",
group = "discovery"
)]
system: bool,

/// Allow `uv` to modify an `EXTERNALLY-MANAGED` Python installation.
Expand Down Expand Up @@ -970,7 +985,12 @@ struct PipFreezeArgs {
///
/// WARNING: `--system` is intended for use in continuous integration (CI) environments and
/// should be used with caution.
#[clap(long, conflicts_with = "python", group = "discovery")]
#[clap(
long,
conflicts_with = "python",
env = "UV_SYSTEM_PYTHON",
group = "discovery"
)]
system: bool,
}

Expand Down Expand Up @@ -1027,7 +1047,12 @@ struct PipListArgs {
///
/// WARNING: `--system` is intended for use in continuous integration (CI) environments and
/// should be used with caution.
#[clap(long, conflicts_with = "python", group = "discovery")]
#[clap(
long,
conflicts_with = "python",
env = "UV_SYSTEM_PYTHON",
group = "discovery"
)]
system: bool,
}

Expand Down Expand Up @@ -1071,7 +1096,12 @@ struct PipShowArgs {
///
/// WARNING: `--system` is intended for use in continuous integration (CI) environments and
/// should be used with caution.
#[clap(long, conflicts_with = "python", group = "discovery")]
#[clap(
long,
conflicts_with = "python",
env = "UV_SYSTEM_PYTHON",
group = "discovery"
)]
system: bool,
}

Expand Down Expand Up @@ -1105,7 +1135,12 @@ struct VenvArgs {
///
/// WARNING: `--system` is intended for use in continuous integration (CI) environments and
/// should be used with caution, as it can modify the system Python installation.
#[clap(long, conflicts_with = "python", group = "discovery")]
#[clap(
long,
conflicts_with = "python",
env = "UV_SYSTEM_PYTHON",
group = "discovery"
)]
system: bool,

/// Install seed packages (`pip`, `setuptools`, and `wheel`) into the virtual environment.
Expand Down

0 comments on commit 85483e8

Please sign in to comment.