常用管理工具比较
| 特性 | uv | pixi | conda | pyenv |
| 核心定位 | 极致高性能的 Python 全能管家 | 跨平台的项目环境/任务管理器 | 科学计算与复杂系统依赖管理 | 纯粹的 Python 版本切换工具 |
| 优势 | 速度极快、完全替代 pip/venv/pyenv | 统一管理 conda + PyPI 依赖 | 兼容性极强,拥有庞大的社区库 | 极简,只做一件事 |
| 局限 | 无法直接安装系统级库 (如 CUDA) | 需要理解 conda 生态 | 速度较慢,环境配置较重 | 功能单一,需配合其他工具 |
| 推荐场景 | 绝大多数纯 Python 项目 | 需要 native 库 (GDAL/CUDA) 的项目 | 维护需要兼容旧架构的遗留项目 | 仅做版本管理的极简主义者 |
详细定位比较
1. uv (现代开发者的首选)
定位:由 Astral 开发,是当前 Python 生态中事实上的“终极替代者”。
- 为什么用它:它用 Rust 重写了整个 Python 安装和管理流程,速度比 pip 快 10-100 倍。它内置了 Python 版本管理(替代了 pyenv)和虚拟环境管理(替代了 venv)。
- 何时使用:适用于 90% 的场景。如果你只是写纯 Python 代码、做 Web 开发、跑 AI 模型(前提是这些库在 PyPI 上有现成的 Wheel 包),
uv是目前最丝滑、最省心的选择。
2. pixi (科学计算与 AI 复杂工程的强者)
定位:基于 conda-forge 生态,通过 Rust 实现的现代化环境管理器。
- 为什么用它:它是“
uv+conda”的结合体。当你的项目需要安装 CUDA 工具包、GDAL、HDF5 等系统级依赖时,uv会因为找不到系统库而报错,但pixi可以将这些系统库和 Python 库锁定在同一个配置文件中。 - 何时使用:如果你正在进行深度的 AI 研发、地理信息处理或跨平台项目,且需要确保团队每个人的开发环境(包括系统级的库)完全一致,
pixi是目前的最优解。
3. conda (经典的行业标准)
定位:长期以来的科研与数据科学标准工具。
- 现状:虽然
conda解决了跨语言依赖问题,但其冷启动慢、环境解析复杂等问题在现代开发中显得略为笨重。 - 何时使用:除非你有极其复杂的遗留项目依赖于特定的
conda环境结构,或者你的公司内部基础设施完全基于conda构建,否则在 2026 年,新项目通常会优先考虑pixi(它兼容conda-forge但体验更好)。
4. pyenv (逐渐淡出的专职工具)
定位:Python 版本管理工具。
- 现状:在
uv出现之前,它是必不可少的。但现在uv已经内置了完全兼容的 Python 版本下载和切换功能(uv python install),你不再需要额外维护一个pyenv。 - 何时使用:目前基本没有新需求。如果你不需要任何包管理功能,只想极其严格地控制系统层面的 Python 版本,它依然可用,但不再是主流推荐。
卸载全局Python
若你跟我一样,已决定全盘采用uv,但以前手动安装有全局Python的话,因全局Python不仅占用C盘空间,还极易在命令行中因为环境变量冲突(比如直接敲 python 时调用了旧环境,而非 uv 管理的环境)引发混淆,建议将其卸载。步骤如下:
步骤一:通过 Windows 标准流程卸载
- 按下快捷键
Win + i打开系统 设置 -> 点击 应用 -> 安装的应用(或“应用和功能”)。 - 在搜索框中输入
Python。 - 找到 Python 3.xx.y (64-bit),点击右侧的
...选择 卸载。 - 如果列表中还有 Python Launcher (py),也可以一并卸载(
uv本身已经具备出色的版本调度能力)。
步骤二:清理残留的残留目录与缓存
官方卸载程序通常只删除标准文件,会留下你自己之前用全局 pip 安装的第三方库。
- 打开文件资源管理器,粘贴并前往以下路径(如果提示找不到,说明已被自动清理,忽略即可):
%localappdata%\Programs\Python - 查看里面是否还有
Python311文件夹。如果有,直接右键彻底删除。 - 清理 pip 全局缓存(可选): 前往
,直接删掉%localappdata%\pippip文件夹,腾出空间。
步骤三:检查并清理环境变量( PATH )
卸载程序一般会自动清理环境变量,但手动确认一下更保险,防止命令行里残留废弃路径:
- 按
Win + R键,输入sysdm.cpl回车,打开“系统属性”。 - 切换到 高级 选项卡 -> 点击右下角的 环境变量。
- 在 “现登录用户 的用户变量” 和 “系统变量” 两栏中,分别双击
Path: - 检查列表中是否有指向
...\AppData\Local\Programs\Python\Python3xx...的条目(例如包含Python3xx或Python3xx\Scripts的行)。 - 如果有,选中它并点击右侧的 删除 -> 点击 确定 保存。
安装全局版uv
全局版uv的好处
统一入口:安装全局版后,你在任何目录下打开终端(CMD / PowerShell / VS Code 终端),都可以直接输入 uv 命令行来一键安装 Python 版本、创建虚拟环境或运行脚本。
不再重复造轮子:有了全局版 uv,你就不需要手动去下载 Python 安装包,也不需要安装臃肿的 Anaconda/Miniconda。它一个人就把 Python版本管理 和 项目环境管理 统统搞定了。
不会污染系统:uv 本身只是一个极轻量的单文件工具(只有几十 MB),它在帮你在各个项目创建隔离环境时,不会像传统的 pip 那样把包乱堆在系统全局路径里。
全局版uv的安装目录
uv程序本身的默认安装路径
通过官方PowerShell脚本方式安装时的默认安装目录:%USERPROFILE%\.local\bin
通过winget方式安装时的默认安装目录:%localappdata%\Programs\uv
两种安装方式后面详述,一般情况下默认目录就好。
uv下载的Python版本和缓存目录
默认情况下,uv会把下载好的各类Python版本和安装包缓存放在:
- Python版本:
%localappdata%\uv\python - 依赖包缓存:
uv\cache%localappdata%\
如果你C盘空间非常充裕:保持默认即可,完全不需要动。
如果你想为C盘省空间,想把 Python 和缓存挪到D盘或其他盘: 可以通过设置 Windows 环境变量,把 uv 的工作目录重定向到存储空间大的盘(比如 D:\uv_store);或用PowerShell脚本一次性配置全局环境变量。我实际使用的PowerShell脚本如下:
# 将 Python 安装路径指向 D 盘
[Environment]::SetEnvironmentVariable("UV_PYTHON_INSTALL_DIR", "D:\uv_store\python", "User")
# 将缓存路径指向 D 盘
[Environment]::SetEnvironmentVariable("UV_CACHE_DIR", "D:\uv_store\cache", "User")
全局版uv的两种常用安装方式
在 Windows 上安装全局 uv 时,官方 Install 脚本 和 winget 包管理器 都是极其常用且官方支持的方式。
两者的本质区别在于:脚本方式更加轻量、原生且更新最快;而 winget 方式更适合习惯用系统级包管理器统筹全电脑软件的用户。
方案一:官方 PowerShell 安装脚本(在cmd命令提示符内执行)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
优点:
- 更新最及时(零延迟):直接从 Astral 官方服务器拉取最新的发布版本。
uv迭代非常频繁,用脚本永远能第一时间拿到最新功能和 bug 修复。 - 自我更新更方便:后续你想升级
uv时,只需在终端敲一行uv self update即可完成瞬间自我无缝升级,无需依赖任何外部包管理器。 - 环境更加独立纯粹:直接将单文件可执行程序放到用户目录(通常是
~/.local/bin)并自动配置 PATH,不依赖 Windows Apps 的系统映射。
缺点:
- 需要运行远程脚本:对部分极度看重安全策略的系统,运行
irm ... | iex这类直接执行网络脚本的操作可能会触发某些杀毒软件的提示(虽然来自官方)。 - 不在 Windows 统一软件列表中:它不会出现在 Windows 的“设置 -> 应用 -> 安装的应用”列表中(如果以后不用了,卸载时需要手动去删
.local/bin里的可执行文件,或者用官方提供的卸载思路)。
方案二:通过 winget 安装
winget install --id astral-sh.uv
优点:
- 系统集成度高:被 Windows 官方的
winget追踪管理,以后可以通过winget upgrade --all一键升级你电脑里的所有软件(包括uv)。 - 卸载非常简单干净:如果哪天不想用了,直接运行
winget uninstall astral-sh.uv或者在 Windows 的“设置 -> 应用”里直接点击卸载即可。 - 安全透明:下载源经过微软
winget-pkgs仓库的审核与哈希校验,对企业或严苛安全环境更友好。
缺点:
- 版本更新微有延迟:虽然 Astral 自动化流程很快,但
winget仓库的 Manifest 同步有时会比官方直接 Release 慢几个小时到一天。 - 升级命令稍显繁琐:想单独升级它时,需要敲
winget upgrade --id astral-sh.uv,而不能直接用内置的uv self update(某些情况下winget安装的版本使用uv self update会提示权限或路径由包管理器控制)。
对比总结
| 维度 | 官方 PowerShell 脚本 | Windows winget |
| 更新速度 | 最快(第一时间获取) | 稍有延迟(依赖仓库同步) |
| 日常升级方式 | uv self update(极简) | winget upgrade astral-sh.uv |
| 卸载方便度 | 手动删除可执行文件 | 系统面板一键卸载 或 winget uninstall |
| 系统侵入度 | 低(单文件放入 .local/bin) | 中 |
最终建议
- 首选“官方 PowerShell 脚本”:如果你是 Python 开发者,追求最丝滑的体验和极速的自我升级(
uv self update),推荐使用官方脚本。这也是uv官方文档中最推荐的方式。 - 首选“
winget”:如果你有“软件强迫症”,希望电脑里所有的命令行工具(如git、cmake、uv)都能通过winget统一管理和面板卸载,选winget更加省心。
我的uv安装和确认的记录
我选的是”官方 PowerShell 脚本“方式
安装结果如下所示,PATH环境变量也被自动加好了(新开cmd命令提示符页面后生效)。

uv python list命令查看可下载的python版本
安装好uv后,在新cmd命令提示符界面中,用uv python list命令可查看可下载的python环境,我的执行结果如下:
uv python list
cpython-3.15.0b3-windows-x86_64-none <download available>
cpython-3.15.0b3+freethreaded-windows-x86_64-none <download available>
cpython-3.14.6-windows-x86_64-none <download available>
cpython-3.14.6+freethreaded-windows-x86_64-none <download available>
cpython-3.13.14-windows-x86_64-none <download available>
cpython-3.13.14+freethreaded-windows-x86_64-none <download available>
cpython-3.12.13-windows-x86_64-none <download available>
cpython-3.11.15-windows-x86_64-none <download available>
cpython-3.10.20-windows-x86_64-none <download available>
cpython-3.9.25-windows-x86_64-none <download available>
cpython-3.8.20-windows-x86_64-none <download available>
pypy-3.11.15-windows-x86_64-none <download available>
pypy-3.10.16-windows-x86_64-none <download available>
pypy-3.9.19-windows-x86_64-none <download available>
pypy-3.8.16-windows-x86_64-none <download available>
graalpy-3.12.0-windows-x86_64-none <download available>
graalpy-3.11.0-windows-x86_64-none <download available>
graalpy-3.10.0-windows-x86_64-none <download available>
uv python list输出结果中的各行含义拆解
每一行的命名格式为:[解释器类型]-[版本号][+特殊变体]-[操作系统]-[架构]-[其他细节]
1. 解释器类型(开头的名称)
cpython:官方标准的 Python 实现,99% 的 Python 开发者和第三方库(Pandas、PyTorch、Django 等)都是基于它运行的。pypy:采用 JIT(即时编译)技术的替代实现,在某些纯计算任务中速度更快,但对部分 C 扩展库兼容性较差。graalpy:Oracle 研发的基于 GraalVM 的 Python 实现,主要用于 Java 与 Python 的混合嵌入开发。
2. 标识含义(后缀与变体)
b3(如 3.15.0b3):代表 Beta(测试版),非正式生产版本,仅供测试新特性使用。+freethreaded:代表无 GIL(全局解释器锁)的自由线程版本。这是 Python 近期引入的实验性特性,旨在提高多核并行性能,但目前大量第三方库尚不支持。windows-x86_64-none:代表适用于 Windows 64位操作系统 的二进制文件。<download available>:说明该版本目前在你的电脑里尚未下载,但uv随时可以从云端拉取并使用。
用uv一键安装python 3.14(最新稳定版)
你不需要手动敲长长的完整文件名,uv 的语义化别名会自动识别最新稳定版:
- 安装推荐的最新稳定版 (Python 3.14):
uv python install 3.14(uv会自动跳过+freethreaded和测试版,精准下载最新的正式稳定版cpython-3.14.6) - 项目中使用: 后续在任何项目目录中创建虚拟环境时,直接指定版本号即可:
uv venv --python 3.14
我的python 3.14的安装结果:
uv python install 3.14
Installed Python 3.14.6 in 3.70s
+ cpython-3.14.6-windows-x86_64-none (python3.14.exe)

仔细观察上面的截图,你会发现这两个文件夹的图标有一个非常关键的小区别:
cpython-3.14-windows-x86_64-none 的文件夹图标左下角带有一个小箭头,这说明它其实不是一个真正的文件夹,而是一个符号链接(Symbolic Link,即快捷方式)。
下面是这两个目录各自的角色和原理:
1. 实际存放内容的实体文件夹:cpython-3.14.6-...
- 作用:这里存放的是 Python 3.14.6 完整的二进制文件、标准库以及可执行程序(
python.exe)。 - 特点:带有完整的小版本号(.6),是真实的磁盘占用实体。
2. 快捷指向的软链接:cpython-3.14-...
- 作用:它是一个指向
cpython-3.14.6-...的软链接,几乎不占用磁盘空间。 - 为什么要这么做? 这是
uv为了版本兼容与快捷调用设计的机制: 当你运行命令uv venv --python 3.14时,你并没有指定末尾的小版本号.6。uv只需要直接寻找cpython-3.14-...这个通用链接,就能自动定位到你目前已安装的最新的3.14.6版本。
💡 总结与建议
- 无需担心空间:虽然看起来有两个目录,但实际上 Python 只有一份,软链接只是一个轻量级的“导航路标”。
- 千万不要手动删除
cpython-3.14-...:如果删掉了这个快捷链接,后续使用uv venv --python 3.14等快捷命令时可能会提示找不到对应的解释器。保持默认即可,uv会自动为你维护这些链接。
在VSCode中关联使用uv创建的虚拟环境(上面安装好的Python 3.14.6)
VSCode 对 Python 虚拟环境有非常完善的自动识别机制,具体操作步骤如下:
步骤一:在项目中用 uv 创建虚拟环境
首先在你的项目根目录下打开终端,运行 uv venv:
# 进入你的项目目录
cd /d D:\Src\Python
# 使用 uv 创建虚拟环境(默认会在当前目录下生成一个 .venv 文件夹)
uv venv
# (可选)如果你有通过uv安装好多个Python版本,想指定特定的Python版本,比如3.14时:
# uv venv --python 3.14
执行完成后,你的项目根目录下会多出一个名为 .venv 的文件夹。
步骤二:在 VSCode 中选择该虚拟环境
- 在 VSCode 中打开项目文件夹(文件 -> 打开文件夹 -> 选择
D:\Src\Python)。 - 打开命令面板:
- Windows环境的快捷键:
Ctrl + Shift + P
- Windows环境的快捷键:
- 输入并选择:
Python: Select Interpreter(Python: 选择解释器)。 - 选择对应的解释器:
- 在弹出的列表中,VSCode 通常会自动扫描并优先推荐带
'.venv’: venv` 标记的解释器,直接点击选中即可。若有多个适是而非的选项,请选择带”workspace”字样的。 - 如果列表中没出来:点击列表最上方的
Enter interpreter path...(输入解释器路径) ->Find...(查找),然后手动定位到你项目里的.venv目录,选择.venv\Scripts\python.exe
- 在弹出的列表中,VSCode 通常会自动扫描并优先推荐带
步骤三:验证是否关联成功
- 查看右下角:打开任意一个
.py文件,查看 VSCode 右下角状态栏,应该会显示类似3.14.x ('.venv': venv)的字样。 - 打开集成终端:在 VSCode 内新建终端(快捷键
Ctrl + ~),你会发现命令行最前面自动加上了(.venv)前缀,说明环境已自动激活。
💡 进阶小技巧
如果你使用 uv 管理项目依赖,在 VSCode 内可以直接使用 uv 替代传统的 pip 命令:
- 安装新依赖:在 VSCode 终端中直接运行:
uv add requests(这会自动把依赖下载到.venv中,并同步更新pyproject.toml文件) - 快捷配置文件(可选): 如果你希望 VSCode 永远优先扫描项目根目录下的
.venv,可以确保项目根目录下的.vscode/settings.json中包含以下设置:JSON{ "python.defaultInterpreterPath": "${workspaceFolder}/.venv/Scripts/python.exe" }


评论