使用 Python 环境
每个 Python 安装都有一个在使用 Python 时处于活动状态的环境。可以将包安装到环境中,以便在 Python 脚本中使用其模块。通常,不修改 Python 安装环境被视为最佳实践。对于操作系统自带的 Python 安装尤其如此,因为操作系统通常会自行管理这些包。虚拟环境是一种将包与 Python 安装环境隔离开的轻量级方式。与 pip
不同,uv 默认要求使用虚拟环境。
创建虚拟环境
uv 支持创建虚拟环境,例如,在 .venv
目录下创建一个虚拟环境:
可以指定特定的名称或路径,例如,在 my-name
目录下创建一个虚拟环境:
可以指定所需的 Python 版本,例如,使用 Python 3.11 创建一个虚拟环境:
请注意,这要求系统上有可用的所需 Python 版本。但是,如果不可用,uv 将为您下载 Python。有关更多详细信息,请参阅Python 版本文档。
使用虚拟环境
使用默认虚拟环境名称时,uv 在后续调用过程中会自动查找并使用该虚拟环境。
可以 “激活” 虚拟环境,以便使用其中的包:
Tip
Unix 系统上的默认激活脚本适用于符合 POSIX 标准的 shell,如 sh
、bash
或 zsh
。对于常见的其他 shell,也有额外的激活脚本。
停用环境
要退出虚拟环境,请使用 deactivate
命令:
使用任意 Python 环境
由于 uv 不依赖于 Python,因此它可以安装到自身之外的虚拟环境中。例如,设置 VIRTUAL_ENV=/path/to/venv
将使 uv 安装到 /path/to/venv
,无论 uv 安装在何处。请注意,如果 VIRTUAL_ENV
设置为一个目录,该目录是
如果不是符合 PEP 405 规范的虚拟环境,将会被忽略。
通过向 uv pip sync
或 uv pip install
提供 --python
参数,uv 也可以安装到任意环境,甚至是非虚拟环境。例如,uv pip install --python /path/to/python
会安装到与 /path/to/python
解释器关联的环境中。
为方便起见,uv pip install --system
会安装到系统 Python 环境中。使用 --system
大致等同于 uv pip install --python $(which python)
,但请注意,与虚拟环境关联的可执行文件将被跳过。尽管我们通常建议使用虚拟环境进行依赖管理,但 --system
在持续集成和容器化环境中是适用的。
--system
标志还用于选择对系统环境进行修改。例如,可以使用 --python
参数请求特定的 Python 版本(例如 --python 3.12
),uv 会搜索符合要求的解释器。如果 uv 找到系统解释器(例如 /usr/lib/python3.12
),则需要 --system
标志才能允许修改这个非虚拟的 Python 环境。如果没有 --system
标志,uv 将忽略任何不在虚拟环境中的解释器。相反,当提供 --system
标志时,uv 将忽略任何在虚拟环境中的解释器。
在不同平台和发行版上向系统 Python 进行安装是出了名的困难。uv 支持常见情况,但并非在所有情况下都能正常工作。例如,由于发行版对 distutils
(而非 sysconfig
)的补丁,在 Python 3.10 之前的 Debian 系统上向系统 Python 安装是不支持的。虽然我们始终建议使用虚拟环境,但在这些非标准环境中,uv 认为虚拟环境是必需的。
如果 uv 安装在某个 Python 环境中,例如通过 pip
安装,它仍然可以用于修改其他环境。但是,当使用 python -m uv
调用时,uv 将默认使用父解释器的环境。通过 Python 调用 uv 会增加启动开销,一般不建议这样使用。
uv 本身不依赖于 Python,但它确实需要定位一个 Python 环境,以便(1)将依赖安装到该环境中,以及(2)构建源发行版。
Python 环境的查找
运行诸如 uv pip sync
或 uv pip install
这类会改变环境的命令时,uv 会按以下顺序查找虚拟环境:
- 基于 VIRTUAL_ENV
环境变量激活的虚拟环境。
- 基于 CONDA_PREFIX
环境变量激活的 Conda 环境。
- 当前目录或最近父目录下 .venv
中的虚拟环境。
如果未找到虚拟环境,uv 会提示用户通过 uv venv
在当前目录中创建一个。
如果包含 --system
标志,uv 将跳过虚拟环境,查找已安装的 Python 版本。同样,运行诸如 uv pip compile
这类不会改变环境的命令时,uv 不要求有虚拟环境,但仍需要 Python 解释器。有关已安装 Python 版本查找的详细信息,请参阅Python 查找文档。