uv venv 实战:从零到隔离环境 30 秒,Python 版本自动搞定
【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv
一个项目钉死在 3.11,另一个非要 3.12,系统 Python 两头都切不过去;virtualenv 每建一个环境都要干等一会儿。uv venv 把这个痛点压成一条命令:.venv立刻就绪,指定的 Python 版本机器上没有就直接下载。下面按日常流程走:装 uv、建环境、激活、锁定版本。
从零到第一个可用的 .venv
Linux / macOS 安装
一条命令装 uv,装完顺手验证一下:
curl -LsSf https://astral.sh/uv/install.sh | sh uv --versionWindows 安装
PowerShell 里一条命令:
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"一条命令建好 .venv
在项目目录里执行,当前目录下就出现.venv:
uv venv # 换个名字或路径也行 uv venv myenv如果你习惯python -m venv,命令可以原样替换,uv 就是当 venv 的替代品在用,只是速度快一个量级。装完环境后,往里装包直接uv pip install <包名>就行,后面会用到。
uv 快的原因不只是语言,缓存机制也省掉了重复下载:
创建时指定 Python 版本
-p是--python的简写,格式不用死记,能写对下面几种就够用:
uv venv -p 3.11 # 任意一个 3.11.x uv venv -p 3.12.3 # 精确到补丁版本 uv venv -p cpython@3.12 # 指定实现(cp / pypy / graalpy 都可以)指定的版本本机没有时,uv 会先下载再建环境,不用手动装 Python。
激活、运行与自动发现
激活就是把终端里的python指到环境内部,按 shell 选对应脚本。
bash / zsh
source .venv/bin/activatefish
source .venv/bin/activate.fish
csh / tcsh
source .venv/bin/activate.csh
nushell
use .venv/bin/activate.nu
Windows CMD
.venv\Scripts\activate.bat
PowerShell
.venv\Scripts\Activate.ps1激活成功后提示符前会出现(.venv)。干完活想退出,敲deactivate就行,所有 shell 通用。
不激活直接跑:uv run
日常其实经常不用激活。uv run会自己找到环境并在其中执行命令:
uv run python script.py uv run pip list这也是为什么团队协作时不用纠结"你有没有激活"——只要.venv在,结果就是可复现的。
uv 怎么找到环境
查找顺序就三条:
- 已激活的环境(
VIRTUAL_ENV环境变量) - 当前目录及其父目录里的
.venv uv run所在项目目录(有pyproject.toml)对应的.venv
版本管理深水区:查、预装、锁定
看一眼有哪些版本可用
交互式选版本前先摸底,3.12和pypy都是过滤条件:
uv python list uv python list 3.12 uv python list pypy预装指定版本
不想在建环境时才触发下载,就提前装好:
uv python install 3.11顺带说一句,uv python upgrade 3.12可以把 uv 管理的版本升到最新补丁版(3.12.1 → 3.12.3),不跨小版本,也不支持 PyPy 等实现。
锁定项目的 Python 版本
两个文件解决两类问题,建议都放进仓库:
.python-version:在项目根目录放一个纯文本文件,内容就一行版本号,比如3.12.3。在该目录及子目录里跑任何 uv 命令,都会优先按它选解释器。uv.toml:用python-preference控制 uv 在"系统 Python"和"uv 下载的 Python"之间怎么取舍:
python-preference = "only-system"四个取值的差别:managed(默认,uv 下载的版本优先,但系统已有的同版本仍优先用系统的)、only-managed(禁用系统 Python)、system(系统优先)、only-system(完全不让 uv 下载)。公司内网机器装不上外部 Python 时,改这一行最省事。
缓存:看一眼、清一下
Python 发行版和下载的包都缓存在本地,目录位置与清理各一条命令:
uv cache dir uv cache clean卡住了:三个高频坑
PowerShell 拒绝执行激活脚本
症状:报"无法加载文件 ...Activate.ps1,因为在此系统上禁止运行脚本"。原因:Windows 默认执行策略是Restricted。修复:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigneduv run 没走 .venv
症状:.venv明明存在,uv run却慢得像冷启动,解释器版本也不对。原因:目录里没有pyproject.toml,uv 不认这是个项目,直接建了临时环境。修复:
uv init生成pyproject.toml后uv run就会走.venv。
-p指定的版本满足不了
症状:uv venv -p 3.13报找不到解释器。原因:要么这个版本号不存在,要么当前网络拉不到下载源。修复:
uv python list先确认要装的版本真实存在,再手动uv python install一遍,能单独定位是网络问题还是版本号写错。
IDE 还在用系统解释器跑代码的话,把 PyCharm 或 VS Code 的解释器指到.venv/bin/python(Windows 是.venv\Scripts\python.exe)即可,环境本身不用动。
uv venv 的价值一句话:建环境一条命令,版本一条命令。更多细节见 first-steps.md。
【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考