概念

Python 版本由 Python 解释器(即 python 可执行文件)、标准库和其他支持文件组成。

托管和系统 Python 安装

由于系统通常已经安装了 Python,uv 支持发现 Python 版本。但 uv 也支持自己安装 Python 版本。为了区分这两种类型:
  • 托管 Python 安装: uv 安装的 Python 版本
  • 系统 Python 安装: 其他所有 Python 安装(包括操作系统或其他工具如 pyenv 安装的)

请求版本

使用 --python 标志请求特定 Python 版本:
uv 会确保 Python 3.11.6 可用(必要时自动下载安装),然后用它创建虚拟环境。

支持的请求格式

  • <version> (例: 3, 3.12, 3.12.3)
  • <version-specifier> (例: >=3.12,<3.13)
  • <version><short-variant> (例: 3.13t, 3.12.0d)
  • <version>+<variant> (例: 3.13+freethreaded, 3.12.0+debug)
  • <implementation> (例: cpython 或 cp)
  • <implementation><version> (例: cpython3.12 或 cp312)
  • <implementation><version-specifier> (例: cpython>=3.12,<3.13)
  • <implementation>-<version>-<os>-<arch>-<libc> (例: cpython-3.12.3-macos-aarch64-none)
还可以请求特定系统 Python 解释器:
  • <executable-path> (例: /opt/homebrew/bin/python3)
  • <executable-name> (例: mypython3)
  • <install-dir> (例: /some/environment/)
提示: 默认情况下,如果系统找不到 Python 版本,uv 会自动下载。可以用 python-downloads 选项禁用此行为。

Python 版本文件

.python-version 文件可创建默认的 Python 版本请求。uv 会在工作目录及其父目录中搜索此文件。如果找不到,会检查用户级配置目录。

创建版本文件

使用 --no-config 可禁用 .python-version 文件的发现。

安装 Python 版本

uv 内置了 macOS、Linux 和 Windows 的 CPython 和 PyPy 发行版下载列表。
提示: 默认情况下,Python 版本会根据需要自动下载,无需使用 uv python install

安装示例

重要: 可用的 Python 版本在每个 uv 版本中固定。要安装新的 Python 版本,可能需要升级 uv。

安装 Python 可执行文件

uv 默认将 Python 可执行文件安装到 PATH 中,例如 uv python install 3.12 会将 Python 安装到 ~/.local/bin/python3.12
提示: 如果 ~/.local/bin 不在 PATH 中,可以用 uv tool update-shell 添加。
安装 pythonpython3 可执行文件:

升级 Python 版本

重要: Python 版本升级支持处于预览阶段。
uv 允许透明升级 Python 补丁版本(如 3.13.4 到 3.13.5),但不支持跨次要版本升级(如 3.12 到 3.13)。
升级后,uv 会优先使用新版本,但会保留旧版本,因为现有虚拟环境可能仍在使用。

项目 Python 版本

uv 在项目命令调用期间会遵守 pyproject.toml 文件中 requires-python 定义的 Python 要求。将使用与要求兼容的第一个 Python 版本,除非通过 .python-version 文件或 --python 标志另行请求。

查看可用的 Python 版本

查找 Python 可执行文件

Python 版本发现规则

搜索 Python 版本时,会按以下顺序检查:
  1. UV_PYTHON_INSTALL_DIR 中的托管 Python 安装
  1. PATH 中的 Python 解释器(macOS/Linux: python, python3, python3.x; Windows: python.exe)
  1. Windows 注册表和 Microsoft Store 中的 Python 解释器(Windows)
发现时会跳过非可执行文件。每个发现的可执行文件都会查询元数据以确保满足请求的 Python 版本。

特殊 Python 变体

预发布版本

Python 预发布版本默认不会被选择。只有在没有其他可用安装匹配请求时才会使用。

自由线程 Python

uv 支持 CPython 3.13+ 中的自由线程 Python 变体。
自由线程 Python 版本默认不会被选择。只有明确请求时才会选择,例如使用 3.13t3.13+freethreaded

调试 Python 变体

uv 支持发现和安装 Python 的调试构建版本。
重要: Python 的调试构建速度较慢,不适合一般使用。
可以使用 3.13d3.13+debug 明确请求调试构建。

禁用自动 Python 下载

默认情况下,uv 会在需要时自动下载 Python 版本。
python-downloads 选项可用于禁用此行为。默认设置为 automatic; 设置为 manual 仅允许在 uv python install 期间下载 Python。
提示: 可以在持久配置文件中设置 python-downloads,或使用 --no-python-downloads 标志。

要求或禁用托管 Python 版本

要在配置文件中更改 uv 的默认行为,请使用 python-preference 设置。

调整 Python 版本偏好

python-preference 设置确定是优先使用系统上已有的 Python 安装,还是 uv 下载安装的。
默认值: managed - 优先使用托管 Python,但仍然优先使用系统 Python 而不是下载新版本。
其他选项:
  • only-managed: 仅使用托管 Python 安装
  • system: 优先使用系统 Python 安装
  • only-system: 仅使用系统 Python 安装

Python 实现支持

uv 支持以下 Python 实现:
  • CPython: cpython, cp
  • PyPy: pypy, pp
  • GraalPy: graalpy, gp
  • Pyodide: pyodide
实现名称请求不区分大小写。

托管 Python 发行版

uv 支持下载和安装 CPython、PyPy 和 Pyodide 发行版。

CPython 发行版

由于 Python 不发布官方的可分发 CPython 二进制文件,uv 使用 Astral python-build-standalone 项目的预构建发行版。这些发行版自包含、高度可移植且高性能。

PyPy 发行版

由 PyPy 项目提供。

Pyodide 发行版

由 Pyodide 项目提供。Pyodide 是针对 WebAssembly / Emscripten 平台的 CPython 移植版本。

aarch64 上的透明 x86_64 仿真

macOS 和 Windows 都支持通过透明仿真在 aarch64 上运行 x86_64 二进制文件(Rosetta 2 或 Windows on ARM)。可以在 aarch64 上使用 x86_64 uv,也可以使用 x86_64 Python 解释器。但 Python 解释器需要其架构的包,要么全部 x86_64,要么全部 aarch64。

Windows 注册表注册

在 Windows 上,安装托管 Python 版本时会按照 PEP 514 的定义在 Windows 注册表中注册。
安装后,可以使用 py 启动器选择 Python 版本:
卸载时,uv 会删除目标版本的注册表项以及任何损坏的注册表项。
akshare 代理配置完整指南国密算法密钥格式对照表
Loading...