CLI Reference
uv
An extremely fast Python package manager.
Usage
Commands
uv authManage authentication
uv runRun a command or script
uv initCreate a new project
uv addAdd dependencies to the project
uv removeRemove dependencies from the project
uv versionRead or update the project's version
uv syncUpdate the project's environment
uv lockUpdate the project's lockfile
uv exportExport the project's lockfile to an alternate format
uv treeDisplay the project's dependency tree
uv formatFormat Python code in the project
uv toolRun and install commands provided by Python packages
uv pythonManage Python versions and installations
uv pipManage Python packages with a pip-compatible interface
uv venvCreate a virtual environment
uv buildBuild Python packages into source distributions and wheels
uv publishUpload distributions to an index
uv cacheManage uv's cache
uv selfManage the uv executable
uv helpDisplay documentation for a command
uv auth
Manage authentication
Usage
Commands
uv auth loginLogin to a service
uv auth logoutLogout of a service
uv auth tokenShow the authentication token for a service
uv auth dirShow the path to the uv credentials directory
uv auth login
Login to a service
Usage
Arguments
- SERVICE
The domain or URL of the service to log into
Options
--allow-insecure-host,--trusted-hostallow-insecure-hostAllow insecure connections to a host.
Can be provided multiple times.
Expects to receive either a hostname (e.g.,
localhost), a host-port pair (e.g.,localhost:8080), or a URL (e.g.,https://localhost).WARNING: Hosts included in this list will not be verified against the system's certificate store. Only use
--allow-insecure-hostin a secure network with verified sources, as it bypasses SSL verification and could expose you to MITM attacks.May also be set with the
UV_INSECURE_HOSTenvironment variable.--cache-dircache-dirPath to the cache directory.
Defaults to
$XDG_CACHE_HOME/uvor$HOME/.cache/uvon macOS and Linux, and%LOCALAPPDATA%\uv\cacheon Windows.To view the location of the cache directory, run
uv cache dir.May also be set with the
UV_CACHE_DIRenvironment variable.--colorcolor-choiceControl the use of color in output.
By default, uv will automatically detect support for colors when writing to a terminal.
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config-fileconfig-fileThe path to a
uv.tomlfile to use for configuration.While uv configuration can be included in a
pyproject.tomlfile, it is not allowed in this context.May also be set with the
UV_CONFIG_FILEenvironment variable.--directorydirectoryChange to the given directory prior to running the command.
Relative paths are resolved with the given directory as the base.
See
--projectto only change the project root directory.May also be set with the
UV_WORKING_DIRenvironment variable.--help,-hDisplay the concise help for this command
--keyring-providerkeyring-providerThe keyring provider to use for storage of credentials.
Only
--keyring-provider nativeis supported forlogin, which uses the system keyring via an integration built into uv.May also be set with the
UV_KEYRING_PROVIDERenvironment variable.Possible values:
disabled: Do not use keyring for credential lookupsubprocess: Use thekeyringcommand for credential lookup
--managed-pythonRequire use of uv-managed Python versions.
By default, uv prefers using Python versions it manages. However, it will use system Python versions if a uv-managed Python is not installed. This option disables use of system Python versions.
May also be set with the
UV_MANAGED_PYTHONenvironment variable.--native-tlsWhether to load TLS certificates from the platform's native certificate store.
By default, uv loads certificates from the bundled
webpki-rootscrate. Thewebpki-rootsare a reliable set of trust roots from Mozilla, and including them in uv improves portability and performance (especially on macOS).However, in some cases, you may want to use the platform's native certificate store, especially if you're relying on a corporate trust root (e.g., for a mandatory proxy) that's included in your system's certificate store.
May also be set with the
UV_NATIVE_TLSenvironment variable.--no-cache,--no-cache-dir,-nAvoid reading from or writing to the cache, instead using a temporary directory for the duration of the operation
May also be set with the
UV_NO_CACHEenvironment variable.--no-configAvoid discovering configuration files (
pyproject.toml,uv.toml).Normally, configuration files are discovered in the current directory, parent directories, or user configuration directories.
May also be set with the
UV_NO_CONFIGenvironment variable.--no-managed-pythonDisable use of uv-managed Python versions.
Instead, uv will search for a suitable Python version on the system.
May also be set with the
UV_NO_MANAGED_PYTHONenvironment variable.--no-progressHide all progress outputs.
For example, spinners or progress bars.
May also be set with the
UV_NO_PROGRESSenvironment variable.--no-python-downloadsDisable automatic downloads of Python.
--offlineDisable network access.
When disabled, uv will only use locally cached data and locally available files.
May also be set with the
UV_OFFLINEenvironment variable.--passwordpasswordThe password to use for the service.
Use
-to read the password from stdin.--projectprojectDiscover a project in the given directory.
All
pyproject.toml,uv.toml, and.python-versionfiles will be discovered by walking up the directory tree from the project root, as will the project's virtual environment (.venv).Other command-line arguments (such as relative paths) will be resolved relative to the current working directory.
See
--directoryto change the working directory entirely.This setting has no effect when used in the
uv pipinterface.May also be set with the
UV_PROJECTenvironment variable.--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which uv will write no output to stdout.--token,-ttokenThe token to use for the service.
The username will be set to
__token__.Use
-to read the token from stdin.--username,-uusernameThe username to use for the service
--verbose,-vUse verbose output.
You can configure fine-grained logging using the
RUST_LOGenvironment variable. (https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives)
uv auth logout
Logout of a service
Usage
Arguments
- SERVICE
The domain or URL of the service to logout from
Options
--allow-insecure-host,--trusted-hostallow-insecure-hostAllow insecure connections to a host.
Can be provided multiple times.
Expects to receive either a hostname (e.g.,
localhost), a host-port pair (e.g.,localhost:8080), or a URL (e.g.,https://localhost).WARNING: Hosts included in this list will not be verified against the system's certificate store. Only use
--allow-insecure-hostin a secure network with verified sources, as it bypasses SSL verification and could expose you to MITM attacks.May also be set with the
UV_INSECURE_HOSTenvironment variable.--cache-dircache-dirPath to the cache directory.
Defaults to
$XDG_CACHE_HOME/uvor$HOME/.cache/uvon macOS and Linux, and%LOCALAPPDATA%\uv\cacheon Windows.To view the location of the cache directory, run
uv cache dir.May also be set with the
UV_CACHE_DIRenvironment variable.--colorcolor-choiceControl the use of color in output.
By default, uv will automatically detect support for colors when writing to a terminal.
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config-fileconfig-fileThe path to a
uv.tomlfile to use for configuration.While uv configuration can be included in a
pyproject.tomlfile, it is not allowed in this context.May also be set with the
UV_CONFIG_FILEenvironment variable.--directorydirectoryChange to the given directory prior to running the command.
Relative paths are resolved with the given directory as the base.
See
--projectto only change the project root directory.May also be set with the
UV_WORKING_DIRenvironment variable.--help,-hDisplay the concise help for this command
--keyring-providerkeyring-providerThe keyring provider to use for storage of credentials.
Only
--keyring-provider nativeis supported forlogout, which uses the system keyring via an integration built into uv.May also be set with the
UV_KEYRING_PROVIDERenvironment variable.Possible values:
disabled: Do not use keyring for credential lookupsubprocess: Use thekeyringcommand for credential lookup
--managed-pythonRequire use of uv-managed Python versions.
By default, uv prefers using Python versions it manages. However, it will use system Python versions if a uv-managed Python is not installed. This option disables use of system Python versions.
May also be set with the
UV_MANAGED_PYTHONenvironment variable.--native-tlsWhether to load TLS certificates from the platform's native certificate store.
By default, uv loads certificates from the bundled
webpki-rootscrate. Thewebpki-rootsare a reliable set of trust roots from Mozilla, and including them in uv improves portability and performance (especially on macOS).However, in some cases, you may want to use the platform's native certificate store, especially if you're relying on a corporate trust root (e.g., for a mandatory proxy) that's included in your system's certificate store.
May also be set with the
UV_NATIVE_TLSenvironment variable.--no-cache,--no-cache-dir,-nAvoid reading from or writing to the cache, instead using a temporary directory for the duration of the operation
May also be set with the
UV_NO_CACHEenvironment variable.--no-configAvoid discovering configuration files (
pyproject.toml,uv.toml).Normally, configuration files are discovered in the current directory, parent directories, or user configuration directories.
May also be set with the
UV_NO_CONFIGenvironment variable.--no-managed-pythonDisable use of uv-managed Python versions.
Instead, uv will search for a suitable Python version on the system.
May also be set with the
UV_NO_MANAGED_PYTHONenvironment variable.--no-progressHide all progress outputs.
For example, spinners or progress bars.
May also be set with the
UV_NO_PROGRESSenvironment variable.--no-python-downloadsDisable automatic downloads of Python.
--offlineDisable network access.
When disabled, uv will only use locally cached data and locally available files.
May also be set with the
UV_OFFLINEenvironment variable.--projectprojectDiscover a project in the given directory.
All
pyproject.toml,uv.toml, and.python-versionfiles will be discovered by walking up the directory tree from the project root, as will the project's virtual environment (.venv).Other command-line arguments (such as relative paths) will be resolved relative to the current working directory.
See
--directoryto change the working directory entirely.This setting has no effect when used in the
uv pipinterface.May also be set with the
UV_PROJECTenvironment variable.--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which uv will write no output to stdout.--username,-uusernameThe username to logout
--verbose,-vUse verbose output.
You can configure fine-grained logging using the
RUST_LOGenvironment variable. (https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives)
uv auth token
Show the authentication token for a service
Usage
Arguments
- SERVICE
The domain or URL of the service to lookup
Options
--allow-insecure-host,--trusted-hostallow-insecure-hostAllow insecure connections to a host.
Can be provided multiple times.
Expects to receive either a hostname (e.g.,
localhost), a host-port pair (e.g.,localhost:8080), or a URL (e.g.,https://localhost).WARNING: Hosts included in this list will not be verified against the system's certificate store. Only use
--allow-insecure-hostin a secure network with verified sources, as it bypasses SSL verification and could expose you to MITM attacks.May also be set with the
UV_INSECURE_HOSTenvironment variable.--cache-dircache-dirPath to the cache directory.
Defaults to
$XDG_CACHE_HOME/uvor$HOME/.cache/uvon macOS and Linux, and%LOCALAPPDATA%\uv\cacheon Windows.To view the location of the cache directory, run
uv cache dir.May also be set with the
UV_CACHE_DIRenvironment variable.--colorcolor-choiceControl the use of color in output.
By default, uv will automatically detect support for colors when writing to a terminal.
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config-fileconfig-fileThe path to a
uv.tomlfile to use for configuration.While uv configuration can be included in a
pyproject.tomlfile, it is not allowed in this context.May also be set with the
UV_CONFIG_FILEenvironment variable.--directorydirectoryChange to the given directory prior to running the command.
Relative paths are resolved with the given directory as the base.
See
--projectto only change the project root directory.May also be set with the
UV_WORKING_DIRenvironment variable.--help,-hDisplay the concise help for this command
--keyring-providerkeyring-providerThe keyring provider to use for reading credentials
May also be set with the
UV_KEYRING_PROVIDERenvironment variable.Possible values:
disabled: Do not use keyring for credential lookupsubprocess: Use thekeyringcommand for credential lookup
--managed-pythonRequire use of uv-managed Python versions.
By default, uv prefers using Python versions it manages. However, it will use system Python versions if a uv-managed Python is not installed. This option disables use of system Python versions.
May also be set with the
UV_MANAGED_PYTHONenvironment variable.--native-tlsWhether to load TLS certificates from the platform's native certificate store.
By default, uv loads certificates from the bundled
webpki-rootscrate. Thewebpki-rootsare a reliable set of trust roots from Mozilla, and including them in uv improves portability and performance (especially on macOS).However, in some cases, you may want to use the platform's native certificate store, especially if you're relying on a corporate trust root (e.g., for a mandatory proxy) that's included in your system's certificate store.
May also be set with the
UV_NATIVE_TLSenvironment variable.--no-cache,--no-cache-dir,-nAvoid reading from or writing to the cache, instead using a temporary directory for the duration of the operation
May also be set with the
UV_NO_CACHEenvironment variable.--no-configAvoid discovering configuration files (
pyproject.toml,uv.toml).Normally, configuration files are discovered in the current directory, parent directories, or user configuration directories.
May also be set with the
UV_NO_CONFIGenvironment variable.--no-managed-pythonDisable use of uv-managed Python versions.
Instead, uv will search for a suitable Python version on the system.
May also be set with the
UV_NO_MANAGED_PYTHONenvironment variable.--no-progressHide all progress outputs.
For example, spinners or progress bars.
May also be set with the
UV_NO_PROGRESSenvironment variable.--no-python-downloadsDisable automatic downloads of Python.
--offlineDisable network access.
When disabled, uv will only use locally cached data and locally available files.
May also be set with the
UV_OFFLINEenvironment variable.--projectprojectDiscover a project in the given directory.
All
pyproject.toml,uv.toml, and.python-versionfiles will be discovered by walking up the directory tree from the project root, as will the project's virtual environment (.venv).Other command-line arguments (such as relative paths) will be resolved relative to the current working directory.
See
--directoryto change the working directory entirely.This setting has no effect when used in the
uv pipinterface.May also be set with the
UV_PROJECTenvironment variable.--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which uv will write no output to stdout.--username,-uusernameThe username to lookup
--verbose,-vUse verbose output.
You can configure fine-grained logging using the
RUST_LOGenvironment variable. (https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives)
uv auth dir
Show the path to the uv credentials directory.
By default, credentials are stored in the uv data directory at $XDG_DATA_HOME/uv/credentials or $HOME/.local/share/uv/credentials on Unix and %APPDATA%\uv\data\credentials on Windows.
The credentials directory may be overridden with $UV_CREDENTIALS_DIR.
Credentials are only stored in this directory when the plaintext backend is used, as opposed to the native backend, which uses the system keyring.
Usage
Arguments
- SERVICE
The domain or URL of the service to lookup
Options
--allow-insecure-host,--trusted-hostallow-insecure-hostAllow insecure connections to a host.
Can be provided multiple times.
Expects to receive either a hostname (e.g.,
localhost), a host-port pair (e.g.,localhost:8080), or a URL (e.g.,https://localhost).WARNING: Hosts included in this list will not be verified against the system's certificate store. Only use
--allow-insecure-hostin a secure network with verified sources, as it bypasses SSL verification and could expose you to MITM attacks.May also be set with the
UV_INSECURE_HOSTenvironment variable.--cache-dircache-dirPath to the cache directory.
Defaults to
$XDG_CACHE_HOME/uvor$HOME/.cache/uvon macOS and Linux, and%LOCALAPPDATA%\uv\cacheon Windows.To view the location of the cache directory, run
uv cache dir.May also be set with the
UV_CACHE_DIRenvironment variable.--colorcolor-choiceControl the use of color in output.
By default, uv will automatically detect support for colors when writing to a terminal.
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config-fileconfig-fileThe path to a
uv.tomlfile to use for configuration.While uv configuration can be included in a
pyproject.tomlfile, it is not allowed in this context.May also be set with the
UV_CONFIG_FILEenvironment variable.--directorydirectoryChange to the given directory prior to running the command.
Relative paths are resolved with the given directory as the base.
See
--projectto only change the project root directory.May also be set with the
UV_WORKING_DIRenvironment variable.--help,-hDisplay the concise help for this command
--managed-pythonRequire use of uv-managed Python versions.
By default, uv prefers using Python versions it manages. However, it will use system Python versions if a uv-managed Python is not installed. This option disables use of system Python versions.
May also be set with the
UV_MANAGED_PYTHONenvironment variable.--native-tlsWhether to load TLS certificates from the platform's native certificate store.
By default, uv loads certificates from the bundled
webpki-rootscrate. Thewebpki-rootsare a reliable set of trust roots from Mozilla, and including them in uv improves portability and performance (especially on macOS).However, in some cases, you may want to use the platform's native certificate store, especially if you're relying on a corporate trust root (e.g., for a mandatory proxy) that's included in your system's certificate store.
May also be set with the
UV_NATIVE_TLSenvironment variable.--no-cache,--no-cache-dir,-nAvoid reading from or writing to the cache, instead using a temporary directory for the duration of the operation
May also be set with the
UV_NO_CACHEenvironment variable.--no-configAvoid discovering configuration files (
pyproject.toml,uv.toml).Normally, configuration files are discovered in the current directory, parent directories, or user configuration directories.
May also be set with the
UV_NO_CONFIGenvironment variable.--no-managed-pythonDisable use of uv-managed Python versions.
Instead, uv will search for a suitable Python version on the system.
May also be set with the
UV_NO_MANAGED_PYTHONenvironment variable.--no-progressHide all progress outputs.
For example, spinners or progress bars.
May also be set with the
UV_NO_PROGRESSenvironment variable.--no-python-downloadsDisable automatic downloads of Python.
--offlineDisable network access.
When disabled, uv will only use locally cached data and locally available files.
May also be set with the
UV_OFFLINEenvironment variable.--projectprojectDiscover a project in the given directory.
All
pyproject.toml,uv.toml, and.python-versionfiles will be discovered by walking up the directory tree from the project root, as will the project's virtual environment (.venv).Other command-line arguments (such as relative paths) will be resolved relative to the current working directory.
See
--directoryto change the working directory entirely.This setting has no effect when used in the
uv pipinterface.May also be set with the
UV_PROJECTenvironment variable.--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which uv will write no output to stdout.--verbose,-vUse verbose output.
You can configure fine-grained logging using the
RUST_LOGenvironment variable. (https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives)
uv run
Run a command or script.
Ensures that the command runs in a Python environment.
When used with a file ending in .py or an HTTP(S) URL, the file will be treated as a script and run with a Python interpreter, i.e., uv run file.py is equivalent to uv run python file.py. For URLs, the script is temporarily downloaded before execution. If the script contains inline dependency metadata, it will be installed into an isolated, ephemeral environment. When used with -, the input will be read from stdin, and treated as a Python script.
When used in a project, the project environment will be created and updated before invoking the command.
When used outside a project, if a virtual environment can be found in the current directory or a parent directory, the command will be run in that environment. Otherwise, the command will be run in the environment of the discovered interpreter.
Arguments following the command (or script) are not interpreted as arguments to uv. All options to uv must be provided before the command, e.g., uv run --verbose foo. A -- can be used to separate the command from uv options for clarity, e.g., uv run --python 3.12 -- python.
Usage
Options
--activePrefer the active virtual environment over the project's virtual environment.
If the project virtual environment is active or no virtual environment is active, this has no effect.
--all-extrasInclude all optional dependencies.
Optional dependencies are defined via
project.optional-dependenciesin apyproject.toml.This option is only available when running in a project.
--all-groupsInclude dependencies from all dependency groups.
--no-groupcan be used to exclude specific groups.--all-packagesRun the command with all workspace members installed.
The workspace's environment (
.venv) is updated to include all workspace members.Any extras or groups specified via
--extra,--group, or related options will be applied to all workspace members.--allow-insecure-host,--trusted-hostallow-insecure-hostAllow insecure connections to a host.
Can be provided multiple times.
Expects to receive either a hostname (e.g.,
localhost), a host-port pair (e.g.,localhost:8080), or a URL (e.g.,https://localhost).WARNING: Hosts included in this list will not be verified against the system's certificate store. Only use
--allow-insecure-hostin a secure network with verified sources, as it bypasses SSL verification and could expose you to MITM attacks.May also be set with the
UV_INSECURE_HOSTenvironment variable.--cache-dircache-dirPath to the cache directory.
Defaults to
$XDG_CACHE_HOME/uvor$HOME/.cache/uvon macOS and Linux, and%LOCALAPPDATA%\uv\cacheon Windows.To view the location of the cache directory, run
uv cache dir.May also be set with the
UV_CACHE_DIRenvironment variable.--colorcolor-choiceControl the use of color in output.
By default, uv will automatically detect support for colors when writing to a terminal.
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--compile-bytecode,--compileCompile Python files to bytecode after installation.
By default, uv does not compile Python (
.py) files to bytecode (__pycache__/*.pyc); instead, compilation is performed lazily the first time a module is imported. For use-cases in which start time is critical, such as CLI applications and Docker containers, this option can be enabled to trade longer installation times for faster start times.When enabled, uv will process the entire site-packages directory (including packages that are not being modified by the current operation) for consistency. Like pip, it will also ignore errors.
May also be set with the
UV_COMPILE_BYTECODEenvironment variable.--config-fileconfig-fileThe path to a
uv.tomlfile to use for configuration.While uv configuration can be included in a
pyproject.tomlfile, it is not allowed in this context.May also be set with the
UV_CONFIG_FILEenvironment variable.--config-setting,--config-settings,-Cconfig-settingSettings to pass to the PEP 517 build backend, specified as
KEY=VALUEpairs--config-settings-package,--config-settings-packageconfig-settings-packageSettings to pass to the PEP 517 build backend for a specific package, specified as
PACKAGE:KEY=VALUEpairs--default-indexdefault-indexThe URL of the default package index (by default: https://pypi.org/simple).
Accepts either a repository compliant with PEP 503 (the simple repository API), or a local directory laid out in the same format.
The index given by this flag is given lower priority than all other indexes specified via the
--indexflag.May also be set with the
UV_DEFAULT_INDEXenvironment variable.--directorydirectoryChange to the given directory prior to running the command.
Relative paths are resolved with the given directory as the base.
See
--projectto only change the project root directory.May also be set with the
UV_WORKING_DIRenvironment variable.--env-fileenv-fileLoad environment variables from a
.envfile.Can be provided multiple times, with subsequent files overriding values defined in previous files.
May also be set with the
UV_ENV_FILEenvironment variable.--exactPerform an exact sync, removing extraneous packages.
When enabled, uv will remove any extraneous packages from the environment. By default,
uv runwill make the minimum necessary changes to satisfy the requirements.--exclude-newerexclude-newerLimit candidate packages to those that were uploaded prior to the given date.
Accepts RFC 3339 timestamps (e.g.,
2006-12-02T02:07:43Z), local dates in the same format (e.g.,2006-12-02) resolved based on your system's configured time zone, a "friendly" duration (e.g.,24 hours,1 week,30 days), or an ISO 8601 duration (e.g.,PT24H,P7D,P30D).Durations do not respect semantics of the local time zone and are always resolved to a fixed number of seconds assuming that a day is 24 hours (e.g., DST transitions are ignored). Calendar units such as months and years are not allowed.
May also be set with the
UV_EXCLUDE_NEWERenvironment variable.--exclude-newer-packageexclude-newer-packageLimit candidate packages for specific packages to those that were uploaded prior to the given date.
Accepts package-date pairs in the format
PACKAGE=DATE, whereDATEis an RFC 3339 timestamp (e.g.,2006-12-02T02:07:43Z), a local date in the same format (e.g.,2006-12-02) resolved based on your system's configured time zone, a "friendly" duration (e.g.,24 hours,1 week,30 days), or an ISO 8601 duration (e.g.,PT24H,P7D,P30D).Durations do not respect semantics of the local time zone and are always resolved to a fixed number of seconds assuming that a day is 24 hours (e.g., DST transitions are ignored). Calendar units such as months and years are not allowed.
Can be provided multiple times for different packages.
--extraextraInclude optional dependencies from the specified extra name.
May be provided more than once.
Optional dependencies are defined via
project.optional-dependenciesin apyproject.toml.This option is only available when running in a project.
--extra-index-urlextra-index-url(Deprecated: use
--indexinstead) Extra URLs of package indexes to use, in addition to--index-url.Accepts either a repository compliant with PEP 503 (the simple repository API), or a local directory laid out in the same format.
All indexes provided via this flag take priority over the index specified by
--index-url(which defaults to PyPI). When multiple--extra-index-urlflags are provided, earlier values take priority.May also be set with the
UV_EXTRA_INDEX_URLenvironment variable.--find-links,-ffind-linksLocations to search for candidate distributions, in addition to those found in the registry indexes.
If a path, the target must be a directory that contains packages as wheel files (
.whl) or source distributions (e.g.,.tar.gzor.zip) at the top level.If a URL, the page must contain a flat list of links to package files adhering to the formats described above.
May also be set with the
UV_FIND_LINKSenvironment variable.--fork-strategyfork-strategyThe strategy to use when selecting multiple versions of a given package across Python versions and platforms.
By default, uv will optimize for selecting the latest version of each package for each supported Python version (
requires-python), while minimizing the number of selected versions across platforms.Under
fewest, uv will minimize the number of selected versions for each package, preferring older versions that are compatible with a wider range of supported Python versions or platforms.May also be set with the
UV_FORK_STRATEGYenvironment variable.Possible values:
fewest: Optimize for selecting the fewest number of versions for each package. Older versions may be preferred if they are compatible with a wider range of supported Python versions or platformsrequires-python: Optimize for selecting latest supported version of each package, for each supported Python version
--frozenRun without updating the
uv.lockfile.Instead of checking if the lockfile is up-to-date, uses the versions in the lockfile as the source of truth. If the lockfile is missing, uv will exit with an error. If the
pyproject.tomlincludes changes to dependencies that have not been included in the lockfile yet, they will not be present in the environment.May also be set with the
UV_FROZENenvironment variable.--groupgroupInclude dependencies from the specified dependency group.
May be provided multiple times.
--gui-scriptRun the given path as a Python GUI script.
Using
--gui-scriptwill attempt to parse the path as a PEP 723 script and run it withpythonw.exe, irrespective of its extension. Only available on Windows.--help,-hDisplay the concise help for this command
--indexindexThe URLs to use when resolving dependencies, in addition to the default index.
Accepts either a repository compliant with PEP 503 (the simple repository API), or a local directory laid out in the same format.
All indexes provided via this flag take priority over the index specified by
--default-index(which defaults to PyPI). When multiple--indexflags are provided, earlier values take priority.Index names are not supported as values. Relative paths must be disambiguated from index names with
./or../on Unix or.\\,..\\,./or../on Windows.May also be set with the
UV_INDEXenvironment variable.--index-strategyindex-strategyThe strategy to use when resolving against multiple index URLs.
By default, uv will stop at the first index on which a given package is available, and limit resolutions to those present on that first index (
first-index). This prevents "dependency confusion" attacks, whereby an attacker can upload a malicious package under the same name to an alternate index.May also be set with the
UV_INDEX_STRATEGYenvironment variable.Possible values:
first-index: Only use results from the first index that returns a match for a given package nameunsafe-first-match: Search for every package name across all indexes, exhausting the versions from the first index before moving on to the nextunsafe-best-match: Search for every package name across all indexes, preferring the "best" version found. If a package version is in multiple indexes, only look at the entry for the first index
--index-url,-iindex-url(Deprecated: use
--default-indexinstead) The URL of the Python package index (by default: https://pypi.org/simple).Accepts either a repository compliant with PEP 503 (the simple repository API), or a local directory laid out in the same format.
The index given by this flag is given lower priority than all other indexes specified via the
--extra-index-urlflag.May also be set with the
UV_INDEX_URLenvironment variable.--isolatedRun the command in an isolated virtual environment.
Usually, the project environment is reused for performance. This option forces a fresh environment to be used for the project, enforcing strict isolation between dependencies and declaration of requirements.
An editable installation is still used for the project.
When used with
--withor--with-requirements, the additional dependencies will still be layered in a second environment.May also be set with the
UV_ISOLATEDenvironment variable.--keyring-providerkeyring-providerAttempt to use
keyringfor authentication for index URLs.At present, only
--keyring-provider subprocessis supported, which configures uv to use thekeyringCLI to handle authentication.Defaults to
disabled.May also be set with the
UV_KEYRING_PROVIDERenvironment variable.Possible values:
disabled: Do not use keyring for credential lookupsubprocess: Use thekeyringcommand for credential lookup
--link-modelink-modeThe method to use when installing packages from the global cache.
Defaults to
clone(also known as Copy-on-Write) on macOS, andhardlinkon Linux and Windows.WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (
uv cache clean) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.May also be set with the
UV_LINK_MODEenvironment variable.Possible values:
clone: Clone (i.e., copy-on-write) packages from the wheel into thesite-packagesdirectorycopy: Copy packages from the wheel into thesite-packagesdirectoryhardlink: Hard link packages from the wheel into thesite-packagesdirectorysymlink: Symbolically link packages from the wheel into thesite-packagesdirectory
--lockedAssert that the
uv.lockwill remain unchanged.Requires that the lockfile is up-to-date. If the lockfile is missing or needs to be updated, uv will exit with an error.
May also be set with the
UV_LOCKEDenvironment variable.--managed-pythonRequire use of uv-managed Python versions.
By default, uv prefers using Python versions it manages. However, it will use system Python versions if a uv-managed Python is not installed. This option disables use of system Python versions.
May also be set with the
UV_MANAGED_PYTHONenvironment variable.--module,-mRun a Python module.
Equivalent to
python -m <module>.--native-tlsWhether to load TLS certificates from the platform's native certificate store.
By default, uv loads certificates from the bundled
webpki-rootscrate. Thewebpki-rootsare a reliable set of trust roots from Mozilla, and including them in uv improves portability and performance (especially on macOS).However, in some cases, you may want to use the platform's native certificate store, especially if you're relying on a corporate trust root (e.g., for a mandatory proxy) that's included in your system's certificate store.
May also be set with the
UV_NATIVE_TLSenvironment variable.--no-binaryDon't install pre-built wheels.
The given packages will be built and installed from source. The resolver will still use pre-built wheels to extract package metadata, if available.
May also be set with the
UV_NO_BINARYenvironment variable.--no-binary-packageno-binary-packageDon't install pre-built wheels for a specific package
May also be set with the
UV_NO_BINARY_PACKAGEenvironment variable.--no-buildDon't build source distributions.
When enabled, resolving will not run arbitrary Python code. The cached wheels of already-built source distributions will be reused, but operations that require building distributions will exit with an error.
May also be set with the
UV_NO_BUILDenvironment variable.--no-build-isolationDisable isolation when building source distributions.
Assumes that build dependencies specified by PEP 518 are already installed.
May also be set with the
UV_NO_BUILD_ISOLATIONenvironment variable.--no-build-isolation-packageno-build-isolation-packageDisable isolation when building source distributions for a specific package.
Assumes that the packages' build dependencies specified by PEP 518 are already installed.
--no-build-packageno-build-packageDon't build source distributions for a specific package
May also be set with the
UV_NO_BUILD_PACKAGEenvironment variable.--no-cache,--no-cache-dir,-nAvoid reading from or writing to the cache, instead using a temporary directory for the duration of the operation
May also be set with the
UV_NO_CACHEenvironment variable.--no-configAvoid discovering configuration files (
pyproject.toml,uv.toml).Normally, configuration files are discovered in the current directory, parent directories, or user configuration directories.
May also be set with the
UV_NO_CONFIGenvironment variable.--no-default-groupsIgnore the default dependency groups.
uv includes the groups defined in
tool.uv.default-groupsby default. This disables that option, however, specific groups can still be included with--group.May also be set with the
UV_NO_DEFAULT_GROUPSenvironment variable.--no-devDisable the development dependency group.
This option is an alias of
--no-group dev. See--no-default-groupsto disable all default groups instead.This option is only available when running in a project.
May also be set with the
UV_NO_DEVenvironment variable.--no-editableInstall any editable dependencies, including the project and any workspace members, as non-editable
May also be set with the
UV_NO_EDITABLEenvironment variable.--no-env-fileAvoid reading environment variables from a
.envfileMay also be set with the
UV_NO_ENV_FILEenvironment variable.--no-extrano-extraExclude the specified optional dependencies, if
--all-extrasis supplied.May be provided multiple times.
--no-groupno-groupDisable the specified dependency group.
This option always takes precedence over default groups,
--all-groups, and--group.May be provided multiple times.
May also be set with the
UV_NO_GROUPenvironment variable.--no-indexIgnore the registry index (e.g., PyPI), instead relying on direct URL dependencies and those provided via
--find-links--no-managed-pythonDisable use of uv-managed Python versions.
Instead, uv will search for a suitable Python version on the system.
May also be set with the
UV_NO_MANAGED_PYTHONenvironment variable.--no-progressHide all progress outputs.
For example, spinners or progress bars.
May also be set with the
UV_NO_PROGRESSenvironment variable.--no-project,--no_workspaceAvoid discovering the project or workspace.
Instead of searching for projects in the current directory and parent directories, run in an isolated, ephemeral environment populated by the
--withrequirements.If a virtual environment is active or found in a current or parent directory, it will be used as if there was no project or workspace.
--no-python-downloadsDisable automatic downloads of Python.
--no-sourcesIgnore the
tool.uv.sourcestable when resolving dependencies. Used to lock against the standards-compliant, publishable package metadata, as opposed to using any workspace, Git, URL, or local path sourcesMay also be set with the
UV_NO_SOURCESenvironment variable.--no-syncAvoid syncing the virtual environment.
Implies
--frozen, as the project dependencies will be ignored (i.e., the lockfile will not be updated, since the environment will not be synced regardless).May also be set with the
UV_NO_SYNCenvironment variable.--offlineDisable network access.
When disabled, uv will only use locally cached data and locally available files.
May also be set with the
UV_OFFLINEenvironment variable.--only-devOnly include the development dependency group.
The project and its dependencies will be omitted.
This option is an alias for
--only-group dev. Implies--no-default-groups.--only-grouponly-groupOnly include dependencies from the specified dependency group.
The project and its dependencies will be omitted.
May be provided multiple times. Implies
--no-default-groups.--packagepackageRun the command in a specific package in the workspace.
If the workspace member does not exist, uv will exit with an error.
--prereleaseprereleaseThe strategy to use when considering pre-release versions.
By default, uv will accept pre-releases for packages that only publish pre-releases, along with first-party requirements that contain an explicit pre-release marker in the declared specifiers (
if-necessary-or-explicit).May also be set with the
UV_PRERELEASEenvironment variable.Possible values:
disallow: Disallow all pre-release versionsallow: Allow all pre-release versionsif-necessary: Allow pre-release versions if all versions of a package are pre-releaseexplicit: Allow pre-release versions for first-party packages with explicit pre-release markers in their version requirementsif-necessary-or-explicit: Allow pre-release versions if all versions of a package are pre-release, or if the package has an explicit pre-release marker in its version requirements
--projectprojectDiscover a project in the given directory.
All
pyproject.toml,uv.toml, and.python-versionfiles will be discovered by walking up the directory tree from the project root, as will the project's virtual environment (.venv).Other command-line arguments (such as relative paths) will be resolved relative to the current working directory.
See
--directoryto change the working directory entirely.This setting has no effect when used in the
uv pipinterface.May also be set with the
UV_PROJECTenvironment variable.--python,-ppythonThe Python interpreter to use for the run environment.
If the interpreter request is satisfied by a discovered environment, the environment will be used.
See uv python to view supported request formats.
May also be set with the
UV_PYTHONenvironment variable.--python-platformpython-platformThe platform for which requirements should be installed.
Represented as a "target triple", a string that describes the target platform in terms of its CPU, vendor, and operating system name, like
x86_64-unknown-linux-gnuoraarch64-apple-darwin.When targeting macOS (Darwin), the default minimum version is
13.0. UseMACOSX_DEPLOYMENT_TARGETto specify a different minimum version, e.g.,14.0.When targeting iOS, the default minimum version is
13.0. UseIPHONEOS_DEPLOYMENT_TARGETto specify a different minimum version, e.g.,14.0.When targeting Android, the default minimum Android API level is
24. UseANDROID_API_LEVELto specify a different minimum version, e.g.,26.WARNING: When specified, uv will select wheels that are compatible with the target platform; as a result, the installed distributions may not be compatible with the current platform. Conversely, any distributions that are built from source may be incompatible with the target platform, as they will be built for the current platform. The
--python-platformoption is intended for advanced use cases.Possible values:
windows: An alias forx86_64-pc-windows-msvc, the default target for Windowslinux: An alias forx86_64-unknown-linux-gnu, the default target for Linuxmacos: An alias foraarch64-apple-darwin, the default target for macOSx86_64-pc-windows-msvc: A 64-bit x86 Windows targetaarch64-pc-windows-msvc: An ARM64 Windows targeti686-pc-windows-msvc: A 32-bit x86 Windows targetx86_64-unknown-linux-gnu: An x86 Linux target. Equivalent tox86_64-manylinux_2_28aarch64-apple-darwin: An ARM-based macOS target, as seen on Apple Silicon devicesx86_64-apple-darwin: An x86 macOS targetaarch64-unknown-linux-gnu: An ARM64 Linux target. Equivalent toaarch64-manylinux_2_28aarch64-unknown-linux-musl: An ARM64 Linux targetx86_64-unknown-linux-musl: Anx86_64Linux targetriscv64-unknown-linux: A RISCV64 Linux targetx86_64-manylinux2014: Anx86_64target for themanylinux2014platform. Equivalent tox86_64-manylinux_2_17x86_64-manylinux_2_17: Anx86_64target for themanylinux_2_17platformx86_64-manylinux_2_28: Anx86_64target for themanylinux_2_28platformx86_64-manylinux_2_31: Anx86_64target for themanylinux_2_31platformx86_64-manylinux_2_32: Anx86_64target for themanylinux_2_32platformx86_64-manylinux_2_33: Anx86_64target for themanylinux_2_33platformx86_64-manylinux_2_34: Anx86_64target for themanylinux_2_34platformx86_64-manylinux_2_35: Anx86_64target for themanylinux_2_35platformx86_64-manylinux_2_36: Anx86_64target for themanylinux_2_36platformx86_64-manylinux_2_37: Anx86_64target for themanylinux_2_37platformx86_64-manylinux_2_38: Anx86_64target for themanylinux_2_38platformx86_64-manylinux_2_39: Anx86_64target for themanylinux_2_39platformx86_64-manylinux_2_40: Anx86_64target for themanylinux_2_40platformaarch64-manylinux2014: An ARM64 target for themanylinux2014platform. Equivalent toaarch64-manylinux_2_17aarch64-manylinux_2_17: An ARM64 target for themanylinux_2_17platformaarch64-manylinux_2_28: An ARM64 target for themanylinux_2_28platformaarch64-manylinux_2_31: An ARM64 target for themanylinux_2_31platformaarch64-manylinux_2_32: An ARM64 target for themanylinux_2_32platformaarch64-manylinux_2_33: An ARM64 target for themanylinux_2_33platformaarch64-manylinux_2_34: An ARM64 target for themanylinux_2_34platformaarch64-manylinux_2_35: An ARM64 target for themanylinux_2_35platformaarch64-manylinux_2_36: An ARM64 target for themanylinux_2_36platformaarch64-manylinux_2_37: An ARM64 target for themanylinux_2_37platformaarch64-manylinux_2_38: An ARM64 target for themanylinux_2_38platformaarch64-manylinux_2_39: An ARM64 target for themanylinux_2_39platformaarch64-manylinux_2_40: An ARM64 target for themanylinux_2_40platformaarch64-linux-android: An ARM64 Android targetx86_64-linux-android: Anx86_64Android targetwasm32-pyodide2024: A wasm32 target using the Pyodide 2024 platform. Meant for use with Python 3.12arm64-apple-ios: An ARM64 target for iOS devicearm64-apple-ios-simulator: An ARM64 target for iOS simulatorx86_64-apple-ios-simulator: Anx86_64target for iOS simulator
--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which uv will write no output to stdout.--refreshRefresh all cached data
--refresh-packagerefresh-packageRefresh cached data for a specific package
--reinstall,--force-reinstallReinstall all packages, regardless of whether they're already installed. Implies
--refresh--reinstall-packagereinstall-packageReinstall a specific package, regardless of whether it's already installed. Implies
--refresh-package--resolutionresolutionThe strategy to use when selecting between the different compatible versions for a given package requirement.
By default, uv will use the latest compatible version of each package (
highest).May also be set with the
UV_RESOLUTIONenvironment variable.Possible values:
highest: Resolve the highest compatible version of each packagelowest: Resolve the lowest compatible version of each packagelowest-direct: Resolve the lowest compatible version of any direct dependencies, and the highest compatible version of any transitive dependencies
--script,-sRun the given path as a Python script.
Using
--scriptwill attempt to parse the path as a PEP 723 script, irrespective of its extension.--upgrade,-UAllow package upgrades, ignoring pinned versions in any existing output file. Implies
--refresh--upgrade-package,-Pupgrade-packageAllow upgrades for a specific package, ignoring pinned versions in any existing output file. Implies
--refresh-package--verbose,-vUse verbose output.
You can configure fine-grained logging using the
RUST_LOGenvironment variable. (https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives)--with,-wwithRun with the given packages installed.
When used in a project, these dependencies will be layered on top of the project environment in a separate, ephemeral environment. These dependencies are allowed to conflict with those specified by the project.
--with-editablewith-editableRun with the given packages installed in editable mode.
When used in a project, these dependencies will be layered on top of the project environment in a separate, ephemeral environment. These dependencies are allowed to conflict with those specified by the project.
--with-requirementswith-requirementsRun with the packages listed in the given files.
The following formats are supported:
requirements.txt,.pyfiles with inline metadata, andpylock.toml.The same environment semantics as
--withapply.Using
pyproject.toml,setup.py, orsetup.cfgfiles is not allowed.
uv init
Create a new project.
Follows the pyproject.toml specification.
If a pyproject.toml already exists at the target, uv will exit with an error.
If a pyproject.toml is found in any of the parent directories of the target path, the project will be added as a workspace member of the parent.
Some project state is not created until needed, e.g., the project virtual environment (.venv) and lockfile (uv.lock) are lazily created during the first sync.
Usage
Arguments
- PATH
The path to use for the project/script.
Defaults to the current working directory when initializing an app or library; required when initializing a script. Accepts relative and absolute paths.
If a
pyproject.tomlis found in any of the parent directories of the target path, the project will be added as a workspace member of the parent, unless--no-workspaceis provided.
Options
--allow-insecure-host,--trusted-hostallow-insecure-hostAllow insecure connections to a host.
Can be provided multiple times.
Expects to receive either a hostname (e.g.,
localhost), a host-port pair (e.g.,localhost:8080), or a URL (e.g.,https://localhost).WARNING: Hosts included in this list will not be verified against the system's certificate store. Only use
--allow-insecure-hostin a secure network with verified sources, as it bypasses SSL verification and could expose you to MITM attacks.May also be set with the
UV_INSECURE_HOSTenvironment variable.--app,--applicationCreate a project for an application.
This is the default behavior if
--libis not requested.This project kind is for web servers, scripts, and command-line interfaces.
By default, an application is not intended to be built and distributed as a Python package. The
--packageoption can be used to create an application that is distributable, e.g., if you want to distribute a command-line interface via PyPI.Fill in the
authorsfield in thepyproject.toml.By default, uv will attempt to infer the author information from some sources (e.g., Git) (
auto). Use--author-from gitto only infer from Git configuration. Use--author-from noneto avoid inferring the author information.Possible values:
auto: Fetch the author information from some sources (e.g., Git) automaticallygit: Fetch the author information from Git configuration onlynone: Do not infer the author information
--bareOnly create a
pyproject.toml.Disables creating extra files like
README.md, thesrc/tree,.python-versionfiles, etc.--build-backendbuild-backendInitialize a build-backend of choice for the project.
Implicitly sets
--package.May also be set with the
UV_INIT_BUILD_BACKENDenvironment variable.Possible values:
uv: Use uv as the project build backendhatch: Use hatchling as the project build backendflit: Use flit-core as the project build backendpdm: Use pdm-backend as the project build backendpoetry: Use poetry-core as the project build backendsetuptools: Use setuptools as the project build backendmaturin: Use maturin as the project build backendscikit: Use scikit-build-core as the project build backend
--cache-dircache-dirPath to the cache directory.
Defaults to
$XDG_CACHE_HOME/uvor$HOME/.cache/uvon macOS and Linux, and%LOCALAPPDATA%\uv\cacheon Windows.To view the location of the cache directory, run
uv cache dir.May also be set with the
UV_CACHE_DIRenvironment variable.--colorcolor-choiceControl the use of color in output.
By default, uv will automatically detect support for colors when writing to a terminal.
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--config-fileconfig-fileThe path to a
uv.tomlfile to use for configuration.While uv configuration can be included in a
pyproject.tomlfile, it is not allowed in this context.May also be set with the
UV_CONFIG_FILEenvironment variable.--descriptiondescriptionSet the project description
--directorydirectoryChange to the given directory prior to running the command.
Relative paths are resolved with the given directory as the base.
See
--projectto only change the project root directory.May also be set with the
UV_WORKING_DIRenvironment variable.--help,-hDisplay the concise help for this command
--lib,--libraryCreate a project for a library.
A library is a project that is intended to be built and distributed as a Python package.
--managed-pythonRequire use of uv-managed Python versions.
By default, uv prefers using Python versions it manages. However, it will use system Python versions if a uv-managed Python is not installed. This option disables use of system Python versions.
May also be set with the
UV_MANAGED_PYTHONenvironment variable.--namenameThe name of the project.
Defaults to the name of the directory.
--native-tlsWhether to load TLS certificates from the platform's native certificate store.
By default, uv loads certificates from the bundled
webpki-rootscrate. Thewebpki-rootsare a reliable set of trust roots from Mozilla, and including them in uv improves portability and performance (especially on macOS).However, in some cases, you may want to use the platform's native certificate store, especially if you're relying on a corporate trust root (e.g., for a mandatory proxy) that's included in your system's certificate store.
May also be set with the
UV_NATIVE_TLSenvironment variable.--no-cache,--no-cache-dir,-nAvoid reading from or writing to the cache, instead using a temporary directory for the duration of the operation
May also be set with the
UV_NO_CACHEenvironment variable.--no-configAvoid discovering configuration files (
pyproject.toml,uv.toml).Normally, configuration files are discovered in the current directory, parent directories, or user configuration directories.
May also be set with the
UV_NO_CONFIGenvironment variable.--no-descriptionDisable the description for the project
--no-managed-pythonDisable use of uv-managed Python versions.
Instead, uv will search for a suitable Python version on the system.
May also be set with the
UV_NO_MANAGED_PYTHONenvironment variable.--no-packageDo not set up the project to be built as a Python package.
Does not include a
[build-system]for the project.This is the default behavior when using
--app.--no-pin-pythonDo not create a
.python-versionfile for the project.By default, uv will create a
.python-versionfile containing the minor version of the discovered Python interpreter, which will cause subsequent uv commands to use that version.--no-progressHide all progress outputs.
For example, spinners or progress bars.
May also be set with the
UV_NO_PROGRESSenvironment variable.--no-python-downloadsDisable automatic downloads of Python.
--no-readmeDo not create a
README.mdfile--no-workspace,--no-projectAvoid discovering a workspace and create a standalone project.
By default, uv searches for workspaces in the current directory or any parent directory.
--offlineDisable network access.
When disabled, uv will only use locally cached data and locally available files.
May also be set with the
UV_OFFLINEenvironment variable.--packageSet up the project to be built as a Python package.
Defines a
[build-system]for the project.This is the default behavior when using
--libor--build-backend.When using
--app, this will include a[project.scripts]entrypoint and use asrc/project structure.--projectprojectDiscover a project in the given directory.
All
pyproject.toml,uv.toml, and.python-versionfiles will be discovered by walking up the directory tree from the project root, as will the project's virtual environment (.venv).Other command-line arguments (such as relative paths) will be resolved relative to the current working directory.
See
--directoryto change the working directory entirely.This setting has no effect when used in the
uv pipinterface.May also be set with the
UV_PROJECTenvironment variable.--python,-ppythonThe Python interpreter to use to determine the minimum supported Python version.
See uv python to view supported request formats.
May also be set with the
UV_PYTHONenvironment variable.--quiet,-qUse quiet output.
Repeating this option, e.g.,
-qq, will enable a silent mode in which uv will write no output to stdout.--scriptCreate a script.
A script is a standalone file with embedded metadata enumerating its dependencies, along with any Python version requirements, as defined in the PEP 723 specification.
PEP 723 scripts can be executed directly with
uv run.By default, adds a requirement on the system Python version; use
--pythonto specify an alternative Python version requirement.--vcsvcsInitialize a version control system for the project.
By default, uv will initialize a Git repository (
git). Use--vcs noneto explicitly avoid initializing a version control system.Possible values:
git: Use Git for version controlnone: Do not use any version control system
--verbose,-vUse verbose output.
You can configure fine-grained logging using the
RUST_LOGenvironment variable. (https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives)
uv add
Add dependencies to the project.
Dependencies are added to the project's pyproject.toml file.
If a given dependency exists already, it will be updated to the new version specifier unless it includes markers that differ from the existing specifier in which case another entry for the dependency will be added.
The lockfile and project environment will be updated to reflect the added dependencies. To skip updating the lockfile, use --frozen. To skip updating the environment, use --no-sync.
If any of the requested dependencies cannot be found, uv will exit with an error, unless the --frozen flag is provided, in which case uv will add the dependencies verbatim without checking that they exist or are compatible with the project.
uv will search for a project in the current directory or any parent directory. If a project cannot be found, uv will exit with an error.
Usage
Arguments
- PACKAGES
The packages to add, as PEP 508 requirements (e.g.,
ruff==0.5.0)
Options
--activePrefer the active virtual environment over the project's virtual environment.
If the project virtual environment is active or no virtual environment is active, this has no effect.
--allow-insecure-host,--trusted-hostallow-insecure-hostAllow insecure connections to a host.
Can be provided multiple times.
Expects to receive either a hostname (e.g.,
localhost), a host-port pair (e.g.,localhost:8080), or a URL (e.g.,https://localhost).WARNING: Hosts included in this list will not be verified against the system's certificate store. Only use
--allow-insecure-hostin a secure network with verified sources, as it bypasses SSL verification and could expose you to MITM attacks.May also be set with the
UV_INSECURE_HOSTenvironment variable.--boundsboundsThe kind of version specifier to use when adding dependencies.
When adding a dependency to the project, if no constraint or URL is provided, a constraint is added based on the latest compatible version of the package. By default, a lower bound constraint is used, e.g.,
>=1.2.3.When
--frozenis provided, no resolution is performed, and dependencies are always added without constraints.This option is in preview and may change in any future release.
Possible values:
lower: Only a lower bound, e.g.,>=1.2.3major: Allow the same major version, similar to the semver caret, e.g.,>=1.2.3, <2.0.0minor: Allow the same minor version, similar to the semver tilde, e.g.,>=1.2.3, <1.3.0exact: Pin the exact version, e.g.,==1.2.3
--branchbranchBranch to use when adding a dependency from Git
--cache-dircache-dirPath to the cache directory.
Defaults to
$XDG_CACHE_HOME/uvor$HOME/.cache/uvon macOS and Linux, and%LOCALAPPDATA%\uv\cacheon Windows.To view the location of the cache directory, run
uv cache dir.May also be set with the
UV_CACHE_DIRenvironment variable.--colorcolor-choiceControl the use of color in output.
By default, uv will automatically detect support for colors when writing to a terminal.
Possible values:
auto: Enables colored output only when the output is going to a terminal or TTY with supportalways: Enables colored output regardless of the detected environmentnever: Disables colored output
--compile-bytecode,--compileCompile Python files to bytecode after installation.
By default, uv does not compile Python (
.py) files to bytecode (__pycache__/*.pyc); instead, compilation is performed lazily the first time a module is imported. For use-cases in which start time is critical, such as CLI applications and Docker containers, this option can be enabled to trade longer installation times for faster start times.When enabled, uv will process the entire site-packages directory (including packages that are not being modified by the current operation) for consistency. Like pip, it will also ignore errors.
May also be set with the
UV_COMPILE_BYTECODEenvironment variable.--config-fileconfig-fileThe path to a
uv.tomlfile to use for configuration.While uv configuration can be included in a
pyproject.tomlfile, it is not allowed in this context.May also be set with the
UV_CONFIG_FILEenvironment variable.--config-setting,--config-settings,-Cconfig-settingSettings to pass to the PEP 517 build backend, specified as
KEY=VALUEpairs--config-settings-package,--config-settings-packageconfig-settings-packageSettings to pass to the PEP 517 build backend for a specific package, specified as
PACKAGE:KEY=VALUEpairs--constraints,--constraint,-cconstraintsConstrain versions using the given requirements files.
Constraints files are
requirements.txt-like files that only control the version of a requirement that's installed. The constraints will not be added to the project'spyproject.tomlfile, but will be respected during dependency resolution.This is equivalent to pip's
--constraintoption.May also be set with the
UV_CONSTRAINTenvironment variable.--default-indexdefault-indexThe URL of the default package index (by default: https://pypi.org/simple).
Accepts either a repository compliant with PEP 503 (the simple repository API), or a local directory laid out in the same format.
The index given by this flag is given lower priority than all other indexes specified via the
--indexflag.May also be set with the
UV_DEFAULT_INDEXenvironment variable.--devAdd the requirements to the development dependency group.
This option is an alias for
--group dev.May also be set with the
UV_DEVenvironment variable.--directorydirectoryChange to the given directory prior to running the command.
Relative paths are resolved with the given directory as the base.
See
--projectto only change the project root directory.May also be set with the
UV_WORKING_DIRenvironment variable.--editableAdd the requirements as editable
--exclude-newerexclude-newerLimit candidate packages to those that were uploaded prior to the given date.
Accepts RFC 3339 timestamps (e.g.,
2006-12-02T02:07:43Z), local dates in the same format (e.g.,2006-12-02) resolved based on your system's configured time zone, a "friendly" duration (e.g.,24 hours,1 week,30 days), or an ISO 8601 duration (e.g.,PT24H,P7D,P30D).Durations do not respect semantics of the local time zone and are always resolved to a fixed number of seconds assuming that a day is 24 hours (e.g., DST transitions are ignored). Calendar units such as months and years are not allowed.
May also be set with the
UV_EXCLUDE_NEWERenvironment variable.--exclude-newer-packageexclude-newer-packageLimit candidate packages for specific packages to those that were uploaded prior to the given date.
Accepts package-date pairs in the format
PACKAGE=DATE, whereDATEis an RFC 3339 timestamp (e.g.,2006-12-02T02:07:43Z), a local date in the same format (e.g.,2006-12-02) resolved based on your system's configured time zone, a "friendly" duration (e.g.,24 hours,1 week,30 days), or an ISO 8601 duration (e.g.,PT24H,P7D,P30D).Durations do not respect semantics of the local time zone and are always resolved to a fixed number of seconds assuming that a day is 24 hours (e.g., DST transitions are ignored). Calendar units such as months and years are not allowed.
Can be provided multiple times for different packages.
--extraextraExtras to enable for the dependency.
May be provided more than once.
To add this dependency to an optional extra instead, see
--optional.--extra-index-urlextra-index-url(Deprecated: use
--indexinstead) Extra URLs of package indexes to use, in addition to--index-url.Accepts either a repository compliant with PEP 503 (the simple repository API), or a local directory laid out in the same format.
All indexes provided via this flag take priority over the index specified by
--index-url(which defaults to PyPI). When multiple--extra-index-urlflags are provided, earlier values take priority.May also be set with the
UV_EXTRA_INDEX_URLenvironment variable.--find-links,-ffind-linksLocations to search for candidate distributions, in addition to those found in the registry indexes.
If a path, the target must be a directory that contains packages as wheel files (
.whl) or source distributions (e.g.,.tar.gzor.zip) at the top level.If a URL, the page must contain a flat list of links to package files adhering to the formats described above.
May also be set with the
UV_FIND_LINKSenvironment variable.--fork-strategyfork-strategyThe strategy to use when selecting multiple versions of a given package across Python versions and platforms.
By default, uv will optimize for selecting the latest version of each package for each supported Python version (
requires-python), while minimizing the number of selected versions across platforms.Under
fewest, uv will minimize the number of selected versions for each package, preferring older versions that are compatible with a wider range of supported Python versions or platforms.May also be set with the
UV_FORK_STRATEGYenvironment variable.Possible values:
fewest: Optimize for selecting the fewest number of versions for each package. Older versions may be preferred if they are compatible with a wider range of supported Python versions or platformsrequires-python: Optimize for selecting latest supported version of each package, for each supported Python version
--frozenAdd dependencies without re-locking the project.
The project environment will not be synced.
May also be set with the
UV_FROZENenvironment variable.--groupgroupAdd the requirements to the specified dependency group.
These requirements will not be included in the published metadata for the project.
--help,-hDisplay the concise help for this command
--indexindexThe URLs to use when resolving dependencies, in addition to the default index.
Accepts either a repository compliant with PEP 503 (the simple repository API), or a local directory laid out in the same format.
All indexes provided via this flag take priority over the index specified by
--default-index(which defaults to PyPI). When multiple--indexflags are provided, earlier values take priority.Index names are not supported as values. Relative paths must be disambiguated from index names with
./or../on Unix or.\\,..\\,./or../on Windows.May also be set with the
UV_INDEXenvironment variable.--index-strategyindex-strategyThe strategy to use when resolving against multiple index URLs.
By default, uv will stop at the first index on which a given package is available, and limit resolutions to those present on that first index (
first-index). This prevents "dependency confusion" attacks, whereby an attacker can upload a malicious package under the same name to an alternate index.May also be set with the
UV_INDEX_STRATEGYenvironment variable.Possible values:
first-index: Only use results from the first index that returns a match for a given package nameunsafe-first-match: Search for every package name across all indexes, exhausting the versions from the first index before moving on to the nextunsafe-best-match: Search for every package name across all indexes, preferring the "best" version found. If a package version is in multiple indexes, only look at the entry for the first index
--index-url,-iindex-url(Deprecated: use
--default-indexinstead) The URL of the Python package index (by default: https://pypi.org/simple).Accepts either a repository compliant with PEP 503 (the simple repository API), or a local directory laid out in the same format.
The index given by this flag is given lower priority than all other indexes specified via the
--extra-index-urlflag.May also be set with the
UV_INDEX_URLenvironment variable.--keyring-providerkeyring-providerAttempt to use
keyringfor authentication for index URLs.At present, only
--keyring-provider subprocessis supported, which configures uv to use thekeyringCLI to handle authentication.Defaults to
disabled.May also be set with the
UV_KEYRING_PROVIDERenvironment variable.Possible values:
disabled: Do not use keyring for credential lookupsubprocess: Use thekeyringcommand for credential lookup
--lfsWhether to use Git LFS when adding a dependency from Git
May also be set with the
UV_GIT_LFSenvironment variable.--link-modelink-modeThe method to use when installing packages from the global cache.
Defaults to
clone(also known as Copy-on-Write) on macOS, andhardlinkon Linux and Windows.WARNING: The use of symlink link mode is discouraged, as they create tight coupling between the cache and the target environment. For example, clearing the cache (
uv cache clean) will break all installed packages by way of removing the underlying source files. Use symlinks with caution.May also be set with the
UV_LINK_MODEenvironment variable.Possible values:
clone: Clone (i.e., copy-on-write) packages from the wheel into thesite-packagesdirectorycopy: Copy packages from the wheel into thesite-packagesdirectoryhardlink: Hard link packages from the wheel into thesite-packagesdirectorysymlink: Symbolically link packages from the wheel into thesite-packagesdirectory
--lockedAssert that the
uv.lockwill remain unchanged.Requires that the lockfile is up-to-date. If the lockfile is missing or needs to be updated, uv will exit with an error.
May also be set with the
UV_LOCKEDenvironment variable.--managed-pythonRequire use of uv-managed Python versions.
By default, uv prefers using Python versions it manages. However, it will use system Python versions if a uv-managed Python is not installed. This option disables use of system Python versions.
May also be set with the
UV_MANAGED_PYTHONenvironment variable.--marker,-mmarkerApply this marker to all added packages