使用 uv 工具在 Windows 系统快速下载安装与切换 Python

一、环境准备

在开始之前,请确保你拥有对 Windows 系统的管理员权限,以便安装软件并修改 PATH 环境变量。整个流程无需预装 Python,uv 会在运行时自动下载并管理所需版本#。

二、安装 uv

1. 使用官方独立安装脚本

uv 官方提供跨平台的独立安装脚本,可在 Windows PowerShell 中执行#:

powershell 复制代码
PS> powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

该命令会在用户目录下创建 uv.exe 并将其添加至 ~/.local/bin(如需,可手动将该路径加入系统 PATH)#。

2. 验证安装

安装完成后,可在任意终端运行:

bash 复制代码
uv version

若输出 uv 的版本号,则表示安装成功。

三、使用 uv 安装 Python

1. 查看可用和已安装的 Python 版本

bash 复制代码
uv python list

该命令会列出所有本地已安装及可供下载的 Python 版本#。

如需过滤特定版本,可在命令后添加版本号:

bash 复制代码
uv python list 3.12

仅显示与 3.12 系列相关的版本。

2. 安装特定 Python 版本

bash 复制代码
uv python install 3.12

该命令会在默认的管理目录(%USERPROFILE%\.local\share\uv\python)下载并安装 CPython 3.12.x 托管版本#。

若需同时安装多个版本,可依次指定:

bash 复制代码
uv python install 3.10 3.11 3.12

3. 重装和卸载

  • 重装所有已管理版本 :

    bash 复制代码
    uv python install --reinstall
  • 卸载指定版本 (示例):

    bash 复制代码
    uv python uninstall 3.11

四、项目级别的 Python 版本管理

1. 永久锁定(pin)

进入项目根目录,运行:

bash 复制代码
uv python pin 3.12

该命令会在当前目录生成或更新 .python-version,后续所有 uv 命令(如 uv venv、uv run、uv pip)均优先使用该版本#。

2. 设置为windows python版本

下面命令会创建一个用户环境变量PYTHON-BIN, 并且指向uv python find结果目录部分

cmd 复制代码
for /f "tokens=*" %i in ('uv python find') do setx PYTHON-BIN "%~dpi\"

然后请手动在用户环境变量python中增加%PYTHON-BIN%, 务必增加到最上面, 如图

重启之后, 命令行就可以正确的使用python了

后续如果要切换系统默认python版本, 比如3.10版本

cmd 复制代码
uv python pin 3.10
for /f "tokens=*" %i in ('uv python find') do setx PYTHON-BIN "%~dpi\"

如此就实现, 使用uv来切换windows的python版本

3 临时指定

如需对单次命令使用不同版本,无需修改配置,可这样执行:

bash 复制代码
uv run --python 3.10 python -c "import sys; print(sys.version)"

该命令仅在本次执行时调用 Python 3.10,不会改变项目设置#。

4. 验证当前生效版本

bash 复制代码
uv python find

输出当前解析后将被调用的 Python 可执行文件路径;加上 --system 可仅在系统路径中查找而忽略虚拟环境#。

五、常见问题

  • 权限错误 :如出现"Permission Denied",请以管理员身份重启 PowerShell 或调整 ~/.local 目录权限。
  • 环境变量未生效 :确保 ~/.local/bin 已加入系统 PATH,并重启终端。
  • 下载失败 :检查网络并确保能访问 https://astral.sh。

六、总结

通过上述步骤,您可以在全新 Windows 系统中快速部署 uv,并使用 uv 高效地安装、切换和管理多个 Python 版本,同时支持项目级别的版本锁定与虚拟环境创建,为 Python 开发提供灵活可靠的环境管理体验。

相关推荐
ragnwang5 小时前
Notes: Python pybind11 import C++ module
开发语言·c++·python
王中阳Go5 小时前
后端转 Agent 岗面试怎么答:8 个高频问题与应答口径
人工智能·后端·python·大语言模型
weixin_307779135 小时前
RAG 面试陷阱——混合检索并非无条件优越:一个条件反转实验
人工智能·python·面试·职场和发展
云和数据.ChenGuang6 小时前
深入解析 Python 的 dir():从用法到 CPython 源码实现
开发语言·人工智能·python·langchain
荣码9 小时前
长上下文与大文档处理:200页PDF怎么喂给AI,我踩了4个坑
java·python
databook10 小时前
Pandas 与 Polars:语法、性能和资源占用方面的对比
python·数据分析·pandas
威哥爱编程10 小时前
Python 智能体开发实战 10:本地跑得好好的,一并发就崩?把它做成一个能上线的服务
python·agent
威哥爱编程10 小时前
Python 智能体开发实战 09:改了提示词,到底是变好还是变坏?搭一套能打分的离线评测
python·agent
meiying883810 小时前
多快递公司快递单号批量查询接口怎么对接?Python 聚合查询实现
java·大数据·python
Hello_Pyhx10 小时前
Deep-Live-Cam 源码配置思路:环境、模型与执行后端分开排查
python