跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

uv 虚拟环境实战:创建、激活与版本控制

uv 是基于 Rust 编写的极速 Python 包管理器,支持快速创建隔离的虚拟环境并自动管理 Python 解释器。涵盖安装方法、多版本指定策略、不同 Shell 下的激活方式,以及利用 uv run 直接运行脚本的技巧。通过配置文件和缓存机制,开发者可显著提升项目环境的一致性与构建效率,解决传统 venv 速度慢、版本管理繁琐的问题。

灵魂伴侣发布于 2026/3/22更新于 2026/10/580 浏览

uv 虚拟环境实战:创建、激活与版本控制

在 Python 开发里,虚拟环境几乎是标配。传统工具如 venv 和 virtualenv 虽然能用,但创建速度慢、版本管理繁琐是常遇到的痛点。uv 作为用 Rust 编写的极速包管理器,不仅安装快,对虚拟环境的支持也更现代化。它能快速创建隔离环境,灵活指定 Python 版本,甚至自动下载缺失的解释器,让多项目环境切换变得轻松。

安装 uv

开始前先确保环境里有 uv。不同系统安装方式略有差异,直接复制执行即可。

Linux 和 macOS

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

安装完成后,运行 uv --version 确认一下。

创建虚拟环境

基本用法

最基础的命令就是 uv venv。这会在当前目录生成一个 .venv 文件夹,里面包含了 Python 解释器和基础依赖管理工具。相比传统方式,这个速度几乎是秒级的。

uv venv
指定名称或路径

默认名字是 .venv,如果你不想覆盖它,或者想放在特定位置,可以这样写:

# 自定义名称
uv venv myenv
# 指定完整路径
uv venv ../path/to/env
指定 Python 版本

这是 uv 的强项之一。如果本地没装对应版本,它会尝试自动下载。支持多种格式,比如具体版本号、范围,甚至是实现类型。

# 指定大版本
uv venv --python 3.11
# 指定补丁版本
uv venv --python 3.12.3
# 版本范围
uv venv --python ">=3.10,<3.13"

支持的格式很灵活:

  • <version>:如 3, 3.12, 3.12.3
  • <version-specifier>:如 >=3.12,<3.13
  • <implementation>:如 cpython 或 cp
  • <implementation>@<version>:如 [email protected]
  • <implementation><version>:如 cpython3.12
选择 Python 实现

除了 CPython,uv 还支持 PyPy 和 GraalPy。

uv venv --python pypy
uv venv --python [email protected]
uv venv --python cp311

激活与停用虚拟环境

创建好后,需要激活才能生效。激活后终端提示符会带上环境名,比如 (.venv)。

Linux 和 macOS

  • Bash/Zsh:
    source .venv/bin/activate
    
  • Fish:
    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
    

退出环境很简单,所有 Shell 通用:

deactivate

Python 版本管理高级技巧

查看可用版本

想知道有哪些版本能下?

uv python list

想看特定系列:

uv python list 3.12
uv python list pypy
安装特定版本

有时候不想等创建环境时再下载,可以先预装好。

uv python install 3.11.6
uv python install 3.12
uv python install pypy
升级与偏好设置

uv 支持升级已安装的 Python 到最新补丁版(注意:目前仅支持预览特性,且不支持 PyPy)。

uv python upgrade 3.12

配置文件中可以设定优先级,比如优先用系统自带的还是 uv 管理的:

# 配置文件设置
uv config set python-preference system
# 命令临时指定
uv venv --python 3.12 --no-managed-python

可选值包括 managed(默认)、only-managed、system、only-system。

自动发现与运行

uv 有个很实用的功能叫自动发现。即使不激活环境,只要在当前目录或其父目录有 .venv,很多命令都能识别。

使用 uv run

不用激活也能跑脚本,这在 CI 或临时测试时特别方便。

uv run python script.py
uv run pip list

还可以传参:

uv run -- python script.py --arg

配合 --project 指定目录搜索范围:

uv --project /path/to/project run python script.py

高级配置与缓存

配置文件

通过 uv.toml 可以定制行为,比如默认 Python 版本、是否自动下载等。

[python]
default-version = "3.12"
preference = "managed"
downloads = "automatic"

[venv]
directory = ".venv"
auto-activate = false
固定项目版本

在项目根目录放一个 .python-version 文件,内容只有一行版本号。uv 会自动读取并应用。

3.12.3
缓存管理

uv 会缓存下载的 Python 和包,清理缓存可以用:

uv cache dir
uv cache clean
uv cache clean --python

常见问题排查

问题 1:创建环境时报找不到 Python 版本 检查列表是否包含该版本:uv python list。如果确实没有,允许自动下载:uv venv --python 3.12 --allow-downloads,或者手动安装:uv python install 3.12。

问题 2:IDE 无法识别虚拟环境 大多数 IDE 需要手动指向解释器路径。比如在 VS Code 中,通过命令面板选择 Python 解释器,然后找到 ./.venv/bin/python (Mac/Linux) 或 ./.venv/Scripts/python.exe (Windows)。

问题 3:版本升级失败 注意 uv 目前主要支持补丁版本升级(如 3.12.1 -> 3.12.2)。如果是小版本跨越(3.11 -> 3.12),建议新建环境迁移数据。

小结

uv 把虚拟环境管理从'麻烦事'变成了'顺手活'。通过 uv venv 快速初始化,利用 --python 锁定版本,配合 uv run 免激活运行,再加上配置文件固化环境,开发体验会有质的提升。随着项目迭代,记得定期清理缓存,保持磁盘清爽。

目录

  1. uv 虚拟环境实战:创建、激活与版本控制
  2. 安装 uv
  3. 创建虚拟环境
  4. 基本用法
  5. 指定名称或路径
  6. 自定义名称
  7. 指定完整路径
  8. 指定 Python 版本
  9. 指定大版本
  10. 指定补丁版本
  11. 版本范围
  12. 选择 Python 实现
  13. 激活与停用虚拟环境
  14. Python 版本管理高级技巧
  15. 查看可用版本
  16. 安装特定版本
  17. 升级与偏好设置
  18. 配置文件设置
  19. 命令临时指定
  20. 自动发现与运行
  21. 使用 uv run
  22. 高级配置与缓存
  23. 配置文件
  24. 固定项目版本
  25. 缓存管理
  26. 常见问题排查
  27. 小结

更多推荐文章

查看全部
  • 开源知识库 RAGFlow 从部署到实战操作详解
  • ChatGLM3 本地化部署与常见问题排查指南
  • AIGC 时代的网络安全威胁与应急响应机制构建
  • Whisper 和 Faster Whisper 模型下载、安装与运行指南
  • AI 产品经理工作全流程与模型构建实战指南
  • AI 辅助产品经理日常工作实战指南与 Prompt 框架
  • 自学 Python 使用 PyCharm 是否友好及学习建议
  • AI 时代初级开发者的创意生存指南:如何避免被算法压制
  • Python Pandas 高效读取 Excel 文件完整指南
  • Python 文本转语音转换器 GUI 应用
  • 服务器环境 VS Code GitHub Copilot 加载超时排查与优化
  • C++ 伸展树与红黑树原理及实现
  • 长亭 Xray Web 漏洞扫描器实战指南
  • PyTorch 实战:基于文本引导的图像生成与 Stable Diffusion 实践
  • 生产环境避坑:哪些 SQL 操作会导致数据库宕机
  • Claude Code 开源平替:OpenCode 搭配 GitHub Copilot 实战
  • Xiaomusic 让小爱音箱解锁本地曲库,内网穿透实现远程点歌
  • C++ 函数模板
  • MySQL 数据库核心操作:创建、修改与备份实战指南
  • 知网与维普 AIGC 检测机制对比及应对策略

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online