uv 不只是包管理器,内置 Python 多解释器版本管理 + 虚拟环境 + 依赖锁定,号称一个工具替代 pyenv + pip + venv + poetry稀土掘金
- uv python list # 查看可用Python版本
- uv python install 3.11 3.12 # 一键下载安装多个Python解释器
- uv python pin 3.12 # 在当前项目写入 .python-version,自动绑定版本
- uv run python xxx.py # 自动读取项目锁定的Python版本,没有就自动下载
- uv venv # 创建虚拟环境
- uv add xxx # 安装包,速度远快于pip
复制代码 Windows 下 uv 安装的 Python 还会注册进 PEP514 注册表,可以和系统自带的 py.exe 启动器互通Astral
(https://docs.astral.sh/uv/concep ... 2l0aW9uIjowfQ%3D%3D)
Windows11 安装 uv(PowerShell)
- # 方案1 官方脚本
- powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
- # 方案2 winget(微软商店包管理器,更稳推荐)
- winget install astral.sh.uv
复制代码
uv 安装成功!提示已经把 uv.exe、uvx.exe、uvw.exe 放到 C:\Users\Administrator\.local\bin,现在只需要把这个路径加入当前终端的环境变量,或者重启终端
:永久加到用户 PATH(推荐,新开终端也能用)
- [Environment]::SetEnvironmentVariable("Path", "$env:USERPROFILE\.local\bin;" + [Environment]::GetEnvironmentVariable("Path", "User"), "User")
复制代码
验证安装新开终端执行
简单试一下 Python 版本管理
- # 查看远端可安装的Python版本
- uv python list
- # 安装指定版本,例如3.11.11
- uv python install 3.11.11
- # 查看本机已经由uv管理的Python
- uv python list --installed
复制代码
快速项目工作流示例(硬件监控脚本场景)
- mkdir hw_monitor_demo
- cd hw_monitor_demo
- # 锁定当前项目使用python3.11
- uv python pin 3.11
- # 创建虚拟环境
- uv venv
- # 安装依赖,比如psutil
- uv add psutil
- # 运行脚本,自动使用项目锁定版本
- uv run python main.py
复制代码
举个完整工作流(顺序)- cd llm_demo # 进入项目文件夹
- uv python pin 3.11 # ✅ 标记:本项目必须使用python3.11
- uv venv .venv # 使用上面锁定的3.11来创建虚拟环境
- .venv\Scripts\Activate.ps1 # 激活环境
- uv add llama-cpp-python # 在3.11环境安装包
- uv run python main.py # 自动调用3.11的python运行代码
复制代码 只对当前文件夹以及子文件夹生效,全局不影响别的项目文件夹可以 uv python pin 3.10,互不干扰。
查看python版本
python --version 直接看肯定失效
不要直接敲 python,在你的项目目录下执行:
原理:uv 读取当前目录.python-version,自动调用该项目绑定的 Python,不需要全局 PATH,不需要手动激活 venv。
如果你非要全局能直接敲 python(不推荐,会破坏多版本隔离)不建议这么做,全局 python 容易版本冲突,但是如果你需要:uv 安装的 Python 本体路径类似:C:\Users\Administrator\.uv\python\versions\3.11.x\bin把这个路径加到系统 PATH,就能全局调用 python。
缺点:全局永远是这一个 Python,失去多版本管理意义。
补充:关闭微软商店那个 python 别名(可选,消除烦人的提示)这个提示来自 Windows 的「应用执行别名」,就算装了 Python,这个别名也会干扰。PowerShell 管理员执行:
- Get-AppxPackage *python* | Remove-AppxPackage
复制代码 ✅ uv 最佳实践:优先 uv run python xxx.py,不用全局 python 命令,项目自动匹配.python-version锁定版本。
|