十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

uv Python 版本管理实战:安装、自动下载与多版本管理指南

uv Python 版本管理实战:安装、自动下载与多版本管理指南 uv Python 版本管理实战安装、自动下载与多版本管理指南【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv本文基于 uv 仓库中的 Python 安装指南 展开系统讲解如何使用uv python命令组安装和管理 Python 解释器从最简的uv python install到指定版本、多版本并存、PyPy 等替代实现再到自动按需下载、与系统 Python 共存、补丁版本升级等完整工作流。读完本文你可以掌握 uv 托管managedPython 的完整生命周期管理并理解其底层命令实现与版本发现机制。快速开始安装最新 Python如果系统已经安装了 Pythonuv 会检测并使用它无需任何配置但 uv 也可以自己安装和管理 Python 版本甚至能按需自动安装缺失的版本——你不需要先装好 Python 就能开始使用 uv。安装最新的 Python 版本$ uv python install需要注意的分布事实Python 官方并不发布可分发的二进制构建distributable binaries。因此 uv 使用的是 Astral 的python-build-standalone项目的发行版。更多发行版细节可参考 Python 版本概念文档。安装完成后该版本会被 uv 的所有命令自动使用。uv 同时会把安装好的版本的可执行文件加入你的PATH$ python3.13默认情况下uv 只安装带版本号的可执行文件如python3.13。如果你还希望得到通用的python和python3可执行文件可以加上实验性的--default选项$ uv python install --default关于可执行文件安装的更多细节目标目录、--force覆盖规则、补丁版本优先策略等可参考 Python 可执行文件安装说明。从仓库的存储文档看Unix 下这些可执行文件默认安装到~/.local/bin例如python3.13说明见 存储参考。如果~/.local/bin不在PATH中可以用uv python update-shell修改 shell 配置其入口实现位于 update_shell.rs。安装指定版本与多版本并存安装特定的 Python 版本$ uv python install 3.12一次安装多个 Python 版本$ uv python install 3.11 3.12安装替代的 Python 实现例如 PyPy$ uv python install pypy3.10uv python install支持的请求格式远不止版本号。结合 Python 版本概念文档--python标志和uv python install支持的格式包括version如3、3.12、3.12.3version-specifier如3.12,3.13安装满足约束的版本versionshort-variant如3.13t、3.12.0dversionvariant如3.13freethreaded、3.12.0debug、3.14gilimplementation如cpython或缩写cpimplementationversion如cpython3.12implementationversion如cpython3.12或cp312implementationversion-specifier如cpython3.12,3.13implementation-version-os-arch-libc如cpython-3.12.3-macos-aarch64-none此外还可以用executable-path、executable-name或install-dir直接请求某个系统解释器这类本地解释器格式不能用于uv python install的远程安装。两个实用的行为细节如果当前目录存在.python-version文件可由uv python pin创建不带参数执行uv python install时会安装该文件中列出的版本如果一个项目需要多个 Python 版本可以定义.python-versions文件列出多个版本uv python install会全部安装。!!! note 每个 uv 发行版内置的可下载 Python 版本列表是冻结的。要安装更新的 Python 版本可能需要先升级 uv 本身。重新安装 Python--reinstall要重新安装 uv 托管的 Python 版本使用--reinstall标志$ uv python install --reinstall这会重新安装所有此前已安装的 Python 版本。由于 Python 发行版中会持续加入改进bug 修复、构建优化即使版本号不变重新安装也可能解决已有问题。从源码实现看这一行为在 install.rs 中有明确体现当传入reinstall为真且没有指定具体目标时命令会把所有已安装的 Python 版本都纳入重装计划// On bare --reinstall, reinstall all Python versions见 install.rs#L394-L395而对于升级场景源码特意区分了重装最新补丁版本而不是每个匹配的补丁版本install.rs#L494-L495。install函数本身的完整签名install.rs#L183也揭示了该命令支持的全部选项维度与文档中的命令行选项一一对应pub(crate) async fn install( project_dir: Path, install_dir: OptionPathBuf, targets: VecString, reinstall: bool, upgrade: PythonUpgrade, bin: Optionbool, registry: Optionbool, force: bool, python_install_mirror: OptionString, pypy_install_mirror: OptionString, python_downloads_json_url: OptionString, client_builder: BaseClientBuilder_, default: bool, python_downloads: PythonDownloads, ... ) - ResultExitStatus例如force对应文档中已存在非 uv 管理的可执行文件时默认不覆盖加--force才覆盖的规则python_install_mirror/pypy_install_mirror则支持自定义下载镜像。查看已安装与可安装的 Python$ uv python listuv python list会同时展示当前可用的版本与 uv 已安装的版本带下载状态标记是排查为什么 uv 选择了某个解释器的第一步。实现入口位于 list.rs#L57。自动 Python 下载要使用 uv你并不需要先显式安装 Python。默认情况下uv 会在需要时自动下载Python 版本。例如以下命令会在 Python 3.12 未安装时自动下载它$ uvx python3.12 -c print(hello world)即使没有请求特定版本uv 也会按需下载最新版。例如如果系统上不存在任何 Python 版本下面的命令会先安装 Python 再创建虚拟环境$ uv venv如果需要更强的控制可以禁用自动下载。方法有两条见 Python 版本概念文档在配置中设置python-downloads选项为manual或never或在任意 uv 命令上传入--no-python-downloads标志。使用系统已有的 Python当系统上已存在 Python 安装时uv 会直接使用它们若系统 Python 满足当前命令调用的要求uv 就会选用它无需任何配置。具体的发现discovery机制——包括从PATH、标准安装位置、.python-version文件逐级搜索——详见 Python 版本发现说明。如果想强制uv 只使用系统 Python、忽略 uv 托管的版本提供--no-managed-python标志反向操作强制只使用托管版本则使用--managed-python$ uv python list --no-managed-python这两个标志与python-preference配置项配合使用用于在托管版本优先与系统版本优先之间切换策略。升级 Python 补丁版本preview!!! important 对 Python 补丁版本的升级支持目前处于preview预览阶段行为是实验性的可能随版本变化。将某个 Python 版本升级到最新的受支持补丁版本$ uv python upgrade 3.12升级所有 uv 托管的 Python 版本$ uv python upgrade几个关键约束来自 Python 版本概念文档升级只支持uv 托管的 Python 版本且目前不支持 PyPy、GraalPy 和 Pyodide升级只允许同 minor 版本内的补丁升级如 3.13.4 → 3.13.5不允许跨 minor 版本3.12 → 3.13因为跨 minor 版本可能影响依赖解析升级后 uv 会优先使用新版本但旧版本会被保留因为已有的虚拟环境可能仍在引用它使用旧版本的虚拟环境会被自动升级到新补丁版本——该机制通过 minor 版本目录实现例如~/.local/share/uv/python/cpython-3.12-macos-aarch64-none但若虚拟环境是显式指定补丁版本创建的如uv venv -p 3.10.8则不会被透明升级。小结与延伸uv python命令组把安装解释器这件传统上依赖发行版包管理器或 pyenv 的事变成了 uv 的一等能力uv python install负责安装支持多版本、替代实现、--default、--reinstalluv python list负责查看uv python upgrade负责补丁版本滚动升级而自动按需下载机制则让大多数用户完全无需显式管理 Python。核心命令的实现都集中在 crates/uv/src/commands/python/ 目录下install.rs、list.rs、find.rs、pin.rs、uninstall.rs 等对应uv python下的各子命令下载元数据由 download-metadata.json 描述这是每个 uv 发行版冻结可用版本列表这一行为的直接体现。下一步可继续阅读 Python 版本概念文档 了解完整的版本请求语法、发现机制与存储布局以及 Python 存储参考 了解托管 Python 与可执行文件的落盘位置最后结合 脚本运行指南 学习如何用 uv 直接运行 Python 脚本。【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表