uv Python 版本管理如何快速装好并切换 Python 多版本:替代 pyenv 的完整指南
【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv
接手老项目,文档要求 Python 3.12,机器上只有 3.8。传统做法是找安装包、配环境变量、给 pyenv 编译半天。uv Python 版本管理把这套流程压缩成几条命令:跑完,版本就在,全局环境不用动。推荐它给新手,一是够快——包装场景里它的速度已是业界标杆:
它管理的 Python 版本装起来同样利落,下面是你真正会碰到的几条命令。
uv python install 用法:一条命令装对版本
只想要最新稳定版,直接不带参数:
uv python install跑完,uv 把当前最新 CPython 拉进受管目录,建 venv 时马上能用。
项目文档写死了版本,就带上数字:
uv python install 3.12写3.12是"3.12 系列最新补丁",写3.12.3才是精确匹配,这是 uv python install 指定版本时最容易混的一点。
要同时备好几套,空格隔开就行:
uv python install 3.11 3.12跑完两个版本并存,随取随用。
习惯 PyPy 这类实现的话,版本号换成实现名:
uv python install pypy@3.10装完之后,所谓 uv 切换 Python 版本并没有额外操作——用哪个版本就用哪个:uv run --python 3.12直接跑,建 venv 时写版本号也可以。
uv 自动下载 Python 的触发条件:不用先装
很多人不知道:uv 不强迫你先装。请求的版本缺了,它自己下载、顺手装好,最直观的例子:
uvx python@3.12 -c "print('hello world')"机器上一个 Python 都没有,这条命令照样能跑:uv 先自动下载 3.12,再执行那行脚本。
uv venv同理:建虚拟环境时找不到 Python,就先把最新版拉下来再建:
uv venv日常用就不用惦记"先装解释器再干活",直接开干。但生产环境我建议显式钉住版本,把自动下载当兜底,而不是默认路径。
uv python list 和 --reinstall:盘点与换新
看机器上装了啥、还能装啥:
uv python list输出里已安装的可下载版本都会列出来,已装的那几行带标记;加个3.13或pypy当过滤词更清爽。
上游发了新构建(安全补丁之类)想换新,版本号不变、重新拉取:
uv python install --reinstall跑完所有版本号保持原样,底层构建换成最新。
uv 与系统 Python 共存:--no-managed-python 用法
uv 不跟系统 Python 打架。找解释器时,系统里已有满足要求的版本就先用它;不够才动受管版本。机器上 apt 装过 3.9 也没关系,互不干扰。
想明确绕开 uv 的受管版本、只用系统那份:
uv --no-managed-python venv这条只会从系统里找解释器,不碰也不下载 uv 的版本。排查"我的命令为什么用了系统 Python"时,这个开关就是排查入口。
uv Python 版本管理避坑清单
- uv 装的 Python 放在私有目录,不替换全局 python。用就建 venv,或直接
uv run,项目环境干净,系统 Python 不受牵连。 - 它用的 CPython 是预构建版本(来自 python-build-standalone 项目),不像 pyenv 那样本地编译,装得快、版本也一致。
- 一个项目一个 venv,版本钉死:项目根目录跑一次
uv python pin生成.python-version文件,队友打开项目时 uv 会照文件取对应版本,大家环境天然一致。 - 补丁发布后定期跑一次
--reinstall换构建,安全更新不落下。
回到开头那个场景:老项目要 3.12,不用再慌。一条命令,泡杯咖啡,版本已经在位。
【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考