uv defines and respects the following environment variables:
added in 0.1.32
Equivalent to the --break-system-packages command-line argument. If set to true,
uv will allow the installation of packages that conflict with system-installed packages.
WARNING: UV_BREAK_SYSTEM_PACKAGES=true is intended for use in continuous integration
(CI) or containerized environments and should be used with caution, as modifying the system
Python can lead to unexpected behavior.
added in 0.2.34
Equivalent to the --build-constraints command-line argument. If set, uv will use this file
as constraints for any source distribution builds. Uses space-separated list of files.
added in 0.0.5
Equivalent to the --cache-dir command-line argument. If set, uv will use this
directory for caching instead of the default cache directory.
added in 0.3.3
Equivalent to the --compile-bytecode command-line argument. If set, uv
will compile Python source files to bytecode after installation.
added in 0.7.22
Timeout (in seconds) for bytecode compilation.
added in 0.1.43
Sets the maximum number of source distributions that uv will build concurrently at any given time.
added in 0.1.43
Sets the maximum number of in-flight concurrent downloads that uv will perform at any given time.
added in 0.1.45
Controls the number of threads used when installing and unzipping packages.
added in 0.1.34
Equivalent to the --config-file command-line argument. Expects a path to a
local uv.toml file to use as the configuration file.
added in 0.1.36
Equivalent to the --constraints command-line argument. If set, uv will use this
file as the constraints file. Uses space-separated list of files.
added in 0.8.15
The directory for storage of credentials when using a plain text backend.
added in 0.1.23
Equivalent to the --custom-compile-command command-line argument.
Used to override uv in the output header of the requirements.txt files generated by
uv pip compile. Intended for use-cases in which uv pip compile is called from within a wrapper
script, to include the name of the wrapper script in the output file.
added in 0.4.23
Equivalent to the --default-index command-line argument. If set, uv will use
this URL as the default index when searching for packages.
added in 0.8.7
Equivalent to the --dev command-line argument. If set, uv will include
development dependencies.
added in 0.8.4
The URL from which to download uv using the standalone installer. By default, installs from
uv's GitHub Releases. INSTALLER_DOWNLOAD_URL is also supported as an alias, for backwards
compatibility.
added in 0.4.30
.env files from which to load environment variables when executing uv run commands.
added in 0.9.8
Equivalent to the --excludes command-line argument. If set, uv will use this
as the excludes file. Uses space-separated list of files.
added in 0.2.12
Equivalent to the --exclude-newer command-line argument. If set, uv will
exclude distributions published after the specified date.
added in 0.1.3
Equivalent to the --extra-index-url command-line argument. If set, uv will
use this space-separated list of URLs as additional indexes when searching for packages.
(Deprecated: use UV_INDEX instead.)
added in 0.4.19
Equivalent to the --find-links command-line argument. If set, uv will use this
comma-separated list of additional locations to search for packages.
added in 0.5.9
Equivalent to the --fork-strategy argument. Controls version selection during universal
resolution.
added in 0.4.25
Equivalent to the --frozen command-line argument. If set, uv will run without
updating the uv.lock file.
added in 0.4.10
Equivalent to the --token argument for self update. A GitHub token for authentication.
added in 0.5.19
Enables fetching files stored in Git LFS when installing a package from a Git repository.
added in 0.9.14
Suppress output from the build backend when building source distributions, even in the event of build failures.
added in 0.7.21
The number of retries for HTTP requests. (default: 3)
added in 0.1.7
Timeout (in seconds) for HTTP requests. (default: 30 s)
added in 0.4.23
Equivalent to the --index command-line argument. If set, uv will use this
space-separated list of URLs as additional indexes when searching for packages.
added in 0.1.29
Equivalent to the --index-strategy command-line argument.
For example, if set to unsafe-best-match, uv will consider versions of a given package
available across all index URLs, rather than limiting its search to the first index URL
that contains the package.
added in 0.0.5
Equivalent to the --index-url command-line argument. If set, uv will use this
URL as the default index when searching for packages.
(Deprecated: use UV_DEFAULT_INDEX instead.)
added in 0.4.23
Provides the HTTP Basic authentication password for a named index.
The name parameter is the name of the index. For example, given an index named foo,
the environment variable key would be UV_INDEX_FOO_PASSWORD.
added in 0.4.23
Provides the HTTP Basic authentication username for a named index.
The name parameter is the name of the index. For example, given an index named foo,
the environment variable key would be UV_INDEX_FOO_USERNAME.
added in 0.8.2
Equivalent to the --build-backend argument for uv init. Determines the default backend
to use when creating a new project.
added in 0.3.5
Equivalent to the --allow-insecure-host argument.
added in 0.8.6
Disable ZIP validation for streamed wheels and ZIP-based source distributions.
WARNING: Disabling ZIP validation can expose your system to security risks by bypassing integrity checks and allowing uv to install potentially malicious ZIP files. If uv rejects a ZIP file due to failing validation, it is likely that the file is malformed; consider filing an issue with the package maintainer.
added in 0.5.0
The URL from which to download uv using the standalone installer and self update feature,
in lieu of the default GitHub Enterprise URL.
added in 0.5.0
The URL from which to download uv using the standalone installer and self update feature,
in lieu of the default GitHub URL.
added in 0.5.0
The directory in which to install uv using the standalone installer and self update feature.
Defaults to ~/.local/bin.
added in 0.8.14
Equivalent to the --isolated command-line argument. If set, uv will avoid discovering
a pyproject.toml or uv.toml file.
added in 0.1.19
Equivalent to the --keyring-provider command-line argument. If set, uv
will use this value as the keyring provider.
added in 0.7.22
Overrides the environment-determined libc on linux systems when filling in the current platform
within Python version requests. Options are: gnu, gnueabi, gnueabihf, musl, and none.
added in 0.1.40
Equivalent to the --link-mode command-line argument. If set, uv will use this as
a link mode.
added in 0.4.25
Equivalent to the --locked command-line argument. If set, uv will assert that the
uv.lock remains unchanged.
added in 0.6.4
Add additional context and structure to log messages.
If logging is not enabled, e.g., with RUST_LOG or -v, this has no effect.
added in 0.6.8
Require use of uv-managed Python versions.
added in 0.1.19
Equivalent to the --native-tls command-line argument. If set to true, uv will
use the system's trust store instead of the bundled webpki-roots crate.
added in 0.5.30
Equivalent to the --no-binary command-line argument. If set, uv will install
all packages from source. The resolver will still use pre-built wheels to
extract package metadata, if available.
added in 0.5.30
Equivalent to the --no-binary-package command line argument. If set, uv will
not use pre-built wheels for the given space-delimited list of packages.
added in 0.1.40
Equivalent to the --no-build command-line argument. If set, uv will not build
source distributions.
added in 0.1.40
Equivalent to the --no-build-isolation command-line argument. If set, uv will
skip isolation when building source distributions.
added in 0.6.5
Equivalent to the --no-build-package command line argument. If set, uv will
not build source distributions for the given space-delimited list of packages.
added in 0.1.2
Equivalent to the --no-cache command-line argument. If set, uv will not use the
cache for any operations.
added in 0.2.30
Equivalent to the --no-config command-line argument. If set, uv will not read
any configuration files from the current directory, parent directories, or user configuration
directories.
added in 0.9.9
Equivalent to the --no-default-groups command-line argument. If set, uv will
not select the default dependency groups defined in tool.uv.default-groups.
added in 0.8.7
Equivalent to the --no-dev command-line argument. If set, uv will exclude
development dependencies.
added in 0.6.15
Equivalent to the --no-editable command-line argument. If set, uv
installs or exports any editable dependencies, including the project and any workspace
members, as non-editable.
added in 0.4.30
Ignore .env files when executing uv run commands.
added in 0.7.13
Disable GitHub-specific requests that allow uv to skip git fetch in some circumstances.
added in 0.9.8
Equivalent to the --no-group command-line argument. If set, uv will disable
the specified dependency groups for the given space-delimited list of packages.
added in 0.8.1
Disable Hugging Face authentication, even if HF_TOKEN is set.
added in 0.5.7
Skip writing uv installer metadata files (e.g., INSTALLER, REQUESTED, and direct_url.json) to site-packages .dist-info directories.
added in 0.6.8
Disable use of uv-managed Python versions.
added in 0.8.4
Avoid modifying the PATH environment variable when installing uv using the standalone
installer and self update feature. INSTALLER_NO_MODIFY_PATH is also supported as an
alias, for backwards compatibility.
added in 0.2.28
Equivalent to the --no-progress command-line argument. Disables all progress output. For
example, spinners and progress bars.
added in 0.9.8
Equivalent to the --no-sources command-line argument. If set, uv will ignore
[tool.uv.sources] annotations when resolving dependencies.
added in 0.4.18
Equivalent to the --no-sync command-line argument. If set, uv will skip updating
the environment.
added in 0.5.3
Equivalent to the --no-verify-hashes argument. Disables hash verification for
requirements.txt files.
added in 0.0.5
Use to disable line wrapping for diagnostics.
added in 0.5.9
Equivalent to the --offline command-line argument. If set, uv will disable network access.
added in 0.2.22
Equivalent to the --overrides command-line argument. If set, uv will use this file
as the overrides file. Uses space-separated list of files.
added in 0.1.16
Equivalent to the --prerelease command-line argument. For example, if set to
allow, uv will allow pre-release versions for all dependencies.
added in 0.1.37
Equivalent to the --preview argument. Enables preview mode.
added in 0.8.4
Equivalent to the --preview-features argument. Enables specific preview features.
added in 0.4.4
Equivalent to the --project command-line argument.
added in 0.4.4
Specifies the path to the directory to use for a project virtual environment.
See the project documentation for more details.
added in 0.4.30
Don't upload a file if it already exists on the index. The value is the URL of the index.
added in 0.5.8
Equivalent to the --index command-line argument in uv publish. If
set, uv the index with this name in the configuration for publishing.
added in 0.9.12
Equivalent to the --no-attestations command-line argument in uv publish. If set,
uv will skip uploading any collected attestations for the published distributions.
added in 0.4.16
Equivalent to the --password command-line argument in uv publish. If
set, uv will use this password for publishing.
added in 0.4.16
Equivalent to the --token command-line argument in uv publish. If set, uv
will use this token (with the username __token__) for publishing.
added in 0.4.16
Equivalent to the --publish-url command-line argument. The URL of the upload
endpoint of the index to use with uv publish.
added in 0.4.16
Equivalent to the --username command-line argument in uv publish. If
set, uv will use this username for publishing.
added in 0.2.35
Managed PyPy installations are downloaded from python.org.
This variable can be set to a mirror URL to use a
different source for PyPy installations. The provided URL will replace
https://downloads.python.org/pypy in, e.g.,
https://downloads.python.org/pypy/pypy3.8-v7.3.7-osx64.tar.bz2.
Distributions can be read from a local directory by using the file:// URL scheme.
added in 0.1.40
Equivalent to the --python command-line argument. If set to a path, uv will use
this Python interpreter for all operations.
added in 0.4.29
Specifies the directory to place links to installed, managed Python executables.
added in 0.7.0
Specifies the directory for caching the archives of managed Python installations before installation.
added in 0.8.14
Pin managed CPython versions to a specific build version.
For CPython, this should be the build date (e.g., "20250814").
added in 0.3.2
Equivalent to the
python-downloads setting and, when disabled, the
--no-python-downloads option. Whether uv should allow Python downloads.
added in 0.6.13
Managed Python installations information is hardcoded in the uv binary.
This variable can be set to a local path or URL pointing to a JSON list of Python installations to override the hardcoded list.
This allows customizing the URLs for downloads or using slightly older or newer versions
of Python than the ones hardcoded into this build of uv.
added in 0.8.14
Pin managed GraalPy versions to a specific build version.
For GraalPy, this should be the GraalPy version (e.g., "24.2.2").
added in 0.8.0
Whether to install the Python executable into the UV_PYTHON_BIN_DIR directory.
added in 0.2.22
Specifies the directory for storing managed Python installations.
added in 0.2.35
Managed Python installations are downloaded from the Astral
python-build-standalone project.
This variable can be set to a mirror URL to use a different source for Python installations.
The provided URL will replace https://github.com/astral-sh/python-build-standalone/releases/download in, e.g.,
https://github.com/astral-sh/python-build-standalone/releases/download/20240713/cpython-3.12.4%2B20240713-aarch64-apple-darwin-install_only.tar.gz.
Distributions can be read from a local directory by using the file:// URL scheme.
added in 0.8.0
Whether to install the Python executable into the Windows registry.
added in 0.3.2
Whether uv should prefer system or managed Python versions.
added in 0.8.14
Pin managed Pyodide versions to a specific build version.
For Pyodide, this should be the Pyodide version (e.g., "0.28.1").
added in 0.8.14
Pin managed PyPy versions to a specific build version.
For PyPy, this should be the PyPy version (e.g., "7.3.20").
added in 0.1.6
Timeout (in seconds) for HTTP requests. Equivalent to UV_HTTP_TIMEOUT.
added in 0.1.34
Equivalent to the --require-hashes command-line argument. If set to true,
uv will require that all dependencies have a hash specified in the requirements file.
added in 0.1.27
Equivalent to the --resolution command-line argument. For example, if set to
lowest-direct, uv will install the lowest compatible versions of all direct dependencies.
added in 0.8.21
The URL to treat as an S3-compatible storage endpoint. Requests to this endpoint
will be signed using AWS Signature Version 4 based on the AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY, AWS_PROFILE, and AWS_CONFIG_FILE environment variables.
added in 0.8.23
Avoid verifying that wheel filenames match their contents when installing wheels. This is not recommended, as wheels with inconsistent filenames should be considered invalid and corrected by the relevant package maintainers; however, this option can be used to work around invalid artifacts in rare cases.
added in 0.0.5
Use to set the stack size used by uv.
The value is in bytes, and if both UV_STACK_SIZE are RUST_MIN_STACK unset, uv uses a 4MB
(4194304) stack. UV_STACK_SIZE takes precedence over RUST_MIN_STACK.
Unlike the normal RUST_MIN_STACK semantics, this can affect main thread
stack size, because we actually spawn our own main2 thread to work around
the fact that Windows' real main thread is only 1MB. That thread has size
max(UV_STACK_SIZE, 1MB).
added in 0.1.18
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_PYTHON=true is intended for use in continuous integration (CI)
or containerized environments and should be used with caution, as modifying the system
Python can lead to unexpected behavior.
added in 0.7.21
Used to disable delay for HTTP retries in tests.
added in 0.3.0
Specifies the "bin" directory for installing tool executables.
added in 0.2.16
Specifies the directory where uv stores managed tools.
added in 0.6.9
Equivalent to the --torch-backend command-line argument (e.g., cpu, cu126, or auto).
added in 0.5.0
Used ephemeral environments like CI to install uv to a specific path while preventing the installer from modifying shell profiles or environment variables.
added in 0.9.1
Timeout (in seconds) for only upload HTTP requests. (default: 900 s)
added in 0.8.0
Equivalent to the --clear command-line argument. If set, uv will remove any
existing files or directories at the target path.
added in 0.5.21
Install seed packages (one or more of: pip, setuptools, and wheel) into the virtual environment
created by uv venv.
Note that setuptools and wheel are not included in Python 3.12+ environments.
added in 0.9.1
Equivalent to the --directory command-line argument.
uv also reads the following externally defined environment variables:
added in 0.1.38
General proxy for all network requests.
added in 0.8.16
Used with --python-platform aarch64-linux-android and related variants to set the
Android API level. (i.e., the minimum supported Android API level).
Defaults to 24.
added in 0.1.42
Path to user-level configuration directory on Windows systems.
added in 0.8.21
The AWS access key ID to use when signing S3 requests.
added in 0.8.21
The AWS config file to use when signing S3 requests.
added in 0.8.21
The default AWS region to use when signing S3 requests, if AWS_REGION is not set.
added in 0.8.21
The AWS profile to use when signing S3 requests.
added in 0.8.21
The AWS region to use when signing S3 requests.
added in 0.8.21
The AWS secret access key to use when signing S3 requests.
added in 0.8.21
The AWS session token to use when signing S3 requests.
added in 0.8.21
The AWS shared credentials file to use when signing S3 requests.
added in 0.1.28
Used to detect Bash shell usage.
added in 0.1.32
Use to control color via anstyle.
added in 0.6.2
Overrides terminal width used for wrapping. This variable is not read by uv directly.
This is a quasi-standard variable, described, e.g., in ncurses(3x).
added in 0.5.0
Used to determine the name of the active Conda environment.
added in 0.0.5
Used to detect the path of an active Conda environment.
added in 0.9.11
Used to determine if we're running in Dependabot.
added in 0.1.28
Used to detect Fish shell usage.
added in 0.2.7
Forces colored output regardless of terminal support.
See force-color.org.
added in 0.4.16
Indicates that the current process is running in GitHub Actions.
uv publish may attempt trusted publishing flows when set
to true.
added in 0.8.18
Indicates that the current process is running in GitLab CI.
uv publish may attempt trusted publishing flows when set
to true.
added in 0.8.1
Authentication token for Hugging Face requests. When set, uv will use this token
when making requests to https://huggingface.co/ and any subdomains.
added in 0.0.5
The standard HOME env var.
added in 0.1.38
Proxy for HTTPS requests.
added in 0.1.38
Proxy for HTTP requests.
added in 0.1.7
Timeout (in seconds) for HTTP requests. Equivalent to UV_HTTP_TIMEOUT.
added in 0.8.16
Used with --python-platform arm64-apple-ios and related variants to set the
deployment target (i.e., the minimum supported iOS version).
Defaults to 13.0.
added in 0.2.6
Used to detect when running inside a Jupyter notebook.
added in 0.2.33
Used to detect Ksh shell usage.
added in 0.3.3
Used to look for Microsoft Store Pythons installations.
added in 0.1.42
Used with --python-platform macos and related variants to set the
deployment target (i.e., the minimum supported macOS version).
Defaults to 13.0, the least-recent non-EOL macOS version at time of writing.
added in 0.1.16
Use to set the .netrc file location.
added in 0.2.7
Disables colored output (takes precedence over FORCE_COLOR).
See no-color.org.
added in 0.1.38
Comma-separated list of hostnames (e.g., example.com) and/or patterns (e.g., 192.168.1.0/24) that should bypass the proxy.
added in 0.1.16
Used to detect NuShell usage.
added in 0.4.18
The standard PAGER posix env var. Used by uv to configure the appropriate pager.
added in 0.0.5
The standard PATH env var.
added in 0.1.16
Used to detect the use of the Windows Command Prompt (as opposed to PowerShell).
added in 0.0.5
The standard PWD posix env var.
added in 0.1.7
The validation modes to use when run with --compile.
See PycInvalidationMode.
added in 0.1.22
Adds directories to Python module search path (e.g., PYTHONPATH=/path/to/modules).
added in 0.8.15
The pyx API key (e.g., sk-pyx-...).
added in 0.8.15
The URL of the pyx Simple API server.
added in 0.8.15
The pyx authentication token (e.g., eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...), as output by uv auth token.
added in 0.8.15
The domain of the pyx CDN.
added in 0.8.15
Specifies the directory where uv stores pyx credentials.
added in 0.7.22
If set, it can be used to display more stack trace details when a panic occurs. This is used by uv particularly on windows to show more details during a platform exception.
For example:
RUST_BACKTRACE=1will print a short backtrace.RUST_BACKTRACE=fullwill print a full backtrace.
See the Rust backtrace documentation for more.
added in 0.0.5
If set, uv will use this value as the log level for its --verbose output. Accepts
any filter compatible with the tracing_subscriber crate.
For example:
RUST_LOG=uv=debugis the equivalent of adding--verboseto the command lineRUST_LOG=tracewill enable trace-level logging.
See the tracing documentation for more.
added in 0.5.19
Use to set the stack size used by uv.
The value is in bytes, and if both UV_STACK_SIZE are RUST_MIN_STACK unset, uv uses a 4MB
(4194304) stack. UV_STACK_SIZE takes precedence over RUST_MIN_STACK.
Prefer setting UV_STACK_SIZE, since RUST_MIN_STACK also affects subprocesses, such as
build backends that use Rust code.
Unlike the normal RUST_MIN_STACK semantics, this can affect main thread
stack size, because we actually spawn our own main2 thread to work around
the fact that Windows' real main thread is only 1MB. That thread has size
max(RUST_MIN_STACK, 1MB).
added in 0.1.16
The standard SHELL posix env var.
added in 0.9.10
Custom path for certificate bundles for SSL connections.
Multiple entries are supported separated using a platform-specific
delimiter (: on Unix, ; on Windows).
Takes precedence over UV_NATIVE_TLS when set.
added in 0.1.14
Custom certificate bundle file path for SSL connections.
Takes precedence over UV_NATIVE_TLS when set.
added in 0.2.11
If set, uv will use this file for mTLS authentication. This should be a single file containing both the certificate and the private key in PEM format.
added in 0.4.26
Path to system-level configuration directory on Windows systems.
added in 0.0.5
Use to create the tracing durations file via the tracing-durations-export feature.
added in 0.0.5
Path to root directory of user's profile on Windows systems.
added in 0.6.0
The path to the binary that was used to invoke uv.
This is propagated to all subprocesses spawned by uv.
If the executable was invoked through a symbolic link, some platforms will return the path of the symbolic link and other platforms will return the path of the symbolic link’s target.
See https://doc.rust-lang.org/std/env/fn.current_exe.html#security for security considerations.
added in 0.0.5
Used to detect an activated virtual environment.
added in 0.0.5
If set to 1 before a virtual environment is activated, then the
virtual environment name will not be prepended to the terminal prompt.
added in 0.2.16
Path to directory where executables are installed.
added in 0.1.17
Path to cache directory on Unix systems.
added in 0.4.26
Path to system-level configuration directory on Unix systems.
added in 0.1.34
Path to user-level configuration directory on Unix systems.
added in 0.2.16
Path to directory for storing managed Python installations and tools.
added in 0.2.25
Used to determine which .zshenv to use when Zsh is being used.
added in 0.1.28
Used to detect Zsh shell usage.
added in 0.8.18
Used to determine the root install path of Conda.