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

uv 虚拟环境管理:venv 创建、激活与 Python 版本指定

uv 是一款基于 Rust 编写的高性能 Python 包管理器,提供比传统 venv 更快的虚拟环境创建速度。文章详细演示了使用 uv venv 命令创建环境、指定 Python 版本及实现跨平台激活的操作步骤。内容涵盖环境隔离原理、版本管理高级技巧、配置文件设置及常见问题解决方案,帮助开发者统一开发环境并提升效率。

1951018925发布于 2026/3/28更新于 2026/7/2155 浏览

uv 虚拟环境管理:venv 创建、激活与 Python 版本指定

引言:虚拟环境管理的痛点与解决方案

在 Python 开发中,虚拟环境(Virtual Environment)是隔离项目依赖的关键工具。传统工具如 venv 和 virtualenv 存在创建速度慢、版本管理繁琐等问题。uv 作为一款用 Rust 编写的极速 Python 包管理器,提供了更高效的虚拟环境管理方案。本文将详细介绍如何使用 uv 创建、激活虚拟环境,并灵活指定 Python 版本。

uv 虚拟环境基础

什么是虚拟环境

虚拟环境(Virtual Environment)是一个独立的 Python 运行环境,允许每个项目拥有自己的依赖包,而不会与其他项目冲突。它通过创建一个包含特定 Python 解释器和依赖包的目录,实现项目间的环境隔离。

uv 虚拟环境的优势

相比传统的 venv 和 virtualenv,uv 的虚拟环境具有以下优势:

特性uvvenvvirtualenv
创建速度极快(Rust 实现)较慢中等
Python 版本管理内置支持,可自动下载需要手动指定有限支持
跨平台兼容性优秀良好良好
缓存机制有无无
与包管理集成无缝集成需要单独使用 pip需要单独使用 pip

安装 uv

在开始使用 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 创建虚拟环境非常简单,基本命令如下:

uv venv 

这条命令会在当前目录下创建一个名为 .venv 的虚拟环境目录,包含了 Python 解释器和基本的依赖管理工具。

指定虚拟环境名称或路径

默认情况下,uv 会创建名为 .venv 的虚拟环境。如果需要指定其他名称或路径,可以使用以下命令:

uv venv myenv # 创建名为 myenv 的虚拟环境
uv venv ../path/to/env # 在指定路径创建虚拟环境
指定 Python 版本

uv 允许在创建虚拟环境时指定 Python 版本。如果系统中没有所需版本,uv 会自动下载并安装。

uv venv --python 3.11 # 使用 Python 3.11 创建虚拟环境
uv venv --python 3.12.3 # 指定具体的补丁版本
uv venv --python ">=3.10,<3.13" # 使用版本范围

支持的 Python 版本格式包括:

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

uv 支持多种 Python 实现,包括 CPython、PyPy 和 GraalPy。可以通过以下命令指定:

uv venv --python pypy # 使用最新版 PyPy
uv venv --python [email protected] # 指定 GraalPy 版本
uv venv --python cp311 # 使用 CPython 3.11

激活虚拟环境

创建虚拟环境后,需要激活它才能使用。激活虚拟环境会将当前终端的 Python 和 pip 命令指向虚拟环境中的版本。

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
Command Prompt (CMD)
.venv\Scripts\activate.bat 
PowerShell
.venv\Scripts\Activate.ps1 
PowerShell Core
.venv\Scripts\Activate.ps1 

激活成功后,终端提示符会显示虚拟环境的名称,如:

(.venv) user@machine:~$

停用虚拟环境

当需要退出虚拟环境时,可以使用以下命令:

deactivate 

这条命令适用于所有支持的 shell 和操作系统。停用后,终端提示符将恢复正常,Python 和 pip 命令将指向系统默认版本。

Python 版本管理高级技巧

查看可用 Python 版本

可以使用以下命令查看 uv 支持的 Python 版本:

uv python list 

要查看特定版本系列的可用版本:

uv python list 3.12 # 查看所有 3.12.x 版本
uv python list pypy # 查看所有 PyPy 版本
安装特定 Python 版本

如果需要预先安装特定的 Python 版本(而不是在创建虚拟环境时自动下载),可以使用:

uv python install 3.11.6 # 安装特定版本
uv python install 3.12 # 安装最新的 3.12.x 版本
uv python install pypy # 安装最新的 PyPy 版本
升级 Python 版本

uv 支持升级已安装的 Python 版本到最新的补丁版本:

uv python upgrade 3.12 # 升级 3.12 到最新补丁版本
uv python upgrade # 升级所有已安装的 Python 版本

注意:升级功能目前是预览特性,仅支持 uv 管理的 Python 版本,且不支持 PyPy 和 GraalPy。

配置 Python 版本偏好

可以通过设置 python-preference 配置项来控制 uv 对系统 Python 和 uv 管理的 Python 的偏好:

# 在配置文件中设置
uv config set python-preference system # 优先使用系统 Python
# 或在命令中临时设置
uv venv --python 3.12 --no-managed-python # 仅使用系统 Python

可用的偏好选项:

  • managed (默认): 优先使用 uv 管理的 Python
  • only-managed: 仅使用 uv 管理的 Python
  • system: 优先使用系统 Python
  • only-system: 仅使用系统 Python

虚拟环境的自动发现与使用

uv 具有自动发现虚拟环境的能力,这使得在项目间切换更加便捷。

自动发现规则

当运行 uv 命令时,它会按照以下顺序搜索虚拟环境:

  1. 激活的虚拟环境(通过 VIRTUAL_ENV 环境变量)
  2. 当前目录或父目录中的 .venv 目录
  3. 系统 Python 环境(如果使用 --system 标志)
在虚拟环境中运行命令

即使没有显式激活虚拟环境,也可以使用 uv run 命令在虚拟环境中运行 Python 脚本或命令:

uv run python script.py # 在自动发现的虚拟环境中运行脚本
uv run -- python script.py --arg # 传递命令行参数给脚本
uv run pip list # 在虚拟环境中运行 pip 命令
指定项目目录

可以使用 --project 选项指定项目目录,uv 会在该目录及其父目录中搜索虚拟环境:

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

高级配置与自定义

配置文件

uv 的配置可以通过 uv.toml 文件进行自定义。以下是一个与虚拟环境相关的配置示例:

# uv.toml
[python]
# 默认 Python 版本
default-version = "3.12"
# Python 版本偏好
preference = "managed"
# 是否自动下载 Python
downloads = "automatic"

[venv]
# 默认虚拟环境目录
directory = ".venv"
# 是否在创建时自动激活
auto-activate = false
使用 .python-version 文件

可以在项目根目录创建 .python-version 文件,指定项目所需的 Python 版本:

3.12.3

当在该目录下运行 uv venv 时,uv 会自动使用文件中指定的 Python 版本。

虚拟环境的缓存管理

uv 会缓存下载的 Python 版本和包,以提高后续创建虚拟环境的速度。可以使用以下命令管理缓存:

uv cache dir # 显示缓存目录
uv cache clean # 清理所有缓存
uv cache clean --python # 仅清理 Python 版本缓存

常见问题与解决方案

虚拟环境创建失败

问题:创建虚拟环境时遇到 Python 版本无法找到的错误。

解决方案:

  1. 检查指定的 Python 版本是否有效:uv python list
  2. 允许 uv 自动下载 Python:uv venv --python 3.12 --allow-downloads
  3. 手动安装所需 Python 版本:uv python install 3.12
激活脚本问题

问题:在某些 shell 中无法激活虚拟环境。

解决方案:

  1. 确保使用了正确的激活脚本(如 zsh 使用 activate,fish 使用 activate.fish)
  2. 尝试使用 uv 的 shell 集成:uv tool update-shell
  3. 手动将虚拟环境的 bin 目录添加到 PATH:export PATH="./.venv/bin:$PATH"
版本升级问题

问题:无法升级虚拟环境中的 Python 版本。

解决方案:

  1. 注意 uv 目前只支持补丁版本的升级(如 3.12.1 到 3.12.2)
  2. 对于次要版本升级(如 3.11 到 3.12),需要创建新的虚拟环境
  3. 启用 Python 升级预览特性:uv venv --python 3.12 --preview-features python-upgrade
与其他工具的兼容性

问题:uv 创建的虚拟环境与某些 IDE 或工具不兼容。

解决方案:

  1. 确保 IDE 使用了虚拟环境中的 Python 解释器路径
  2. 在 PyCharm 中:File > Settings > Project: xxx > Python Interpreter > Add > Existing environment
  3. 在 VS Code 中:Ctrl+Shift+P > Python: Select Interpreter > 选择 ./.venv/bin/python

总结与展望

uv 提供了一个快速、灵活的虚拟环境管理解决方案,解决了传统工具的诸多痛点。通过本文的介绍,你已经掌握了使用 uv 创建、激活虚拟环境,以及管理 Python 版本的基本方法。

关键知识点回顾
  • 使用 uv venv 创建虚拟环境,可指定名称和路径
  • 通过 --python 选项灵活指定 Python 版本
  • 不同操作系统下的激活命令
  • 利用 .python-version 文件实现项目版本固定
  • uv run 命令可直接在虚拟环境中运行程序
  • 通过配置文件和命令行选项自定义行为
未来展望

uv 作为一个活跃开发的项目,未来可能会引入更多虚拟环境相关的特性,如:

  • 虚拟环境的迁移和复制
  • 更高级的版本管理策略
  • 与容器化工具的集成
  • 多 Python 版本并存的高级支持

随着 uv 的不断发展,它有望成为 Python 生态中虚拟环境管理的首选工具。

目录

  1. uv 虚拟环境管理:venv 创建、激活与 Python 版本指定
  2. 引言:虚拟环境管理的痛点与解决方案
  3. uv 虚拟环境基础
  4. 什么是虚拟环境
  5. uv 虚拟环境的优势
  6. 安装 uv
  7. Linux 和 macOS
  8. Windows
  9. 创建虚拟环境
  10. 基本用法
  11. 指定虚拟环境名称或路径
  12. 指定 Python 版本
  13. 选择 Python 实现
  14. 激活虚拟环境
  15. Linux 和 macOS
  16. Bash/Zsh
  17. Fish
  18. Csh/Tcsh
  19. Nushell
  20. Windows
  21. Command Prompt (CMD)
  22. PowerShell
  23. PowerShell Core
  24. 停用虚拟环境
  25. Python 版本管理高级技巧
  26. 查看可用 Python 版本
  27. 安装特定 Python 版本
  28. 升级 Python 版本
  29. 配置 Python 版本偏好
  30. 在配置文件中设置
  31. 或在命令中临时设置
  32. 虚拟环境的自动发现与使用
  33. 自动发现规则
  34. 在虚拟环境中运行命令
  35. 指定项目目录
  36. 高级配置与自定义
  37. 配置文件
  38. uv.toml
  39. 默认 Python 版本
  40. Python 版本偏好
  41. 是否自动下载 Python
  42. 默认虚拟环境目录
  43. 是否在创建时自动激活
  44. 使用 .python-version 文件
  45. 虚拟环境的缓存管理
  46. 常见问题与解决方案
  47. 虚拟环境创建失败
  48. 激活脚本问题
  49. 版本升级问题
  50. 与其他工具的兼容性
  51. 总结与展望
  52. 关键知识点回顾
  53. 未来展望
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Windows 下 OpenClaw 开源 AI 代理框架部署指南
  • Apache HTTP Server 详细介绍与配置指南
  • 企业裁员前的十大征兆
  • Llama 3 发布,大模型开源与闭源之争的本质是什么?
  • IDEA 集成 AI 插件快速构建 Java 全栈功能实战
  • Dify 工作流发布为 MCP Server 实战指南
  • 零基础学习网络安全指南:职业方向与技能路径
  • AI 编程助手选型指南:Claude, Cursor, Aider 与 Copilot 深度对比
  • 基于 Cursor 的 Web 版背单词应用开发实战
  • AI 时代产品经理核心工作流与效率提升指南
  • 路径类动态规划入门:3 道经典例题详解
  • LeetCode 92 链表区间反转:递归实现与哨兵技巧详解
  • Spring Cloud 微服务架构概述与工程搭建实战
  • 树莓派 SPI 通信读取 255 故障排查:spidev 驱动与硬件层分析
  • NVIDIA GPU 架构详解:从 Pascal 到 Blackwell 的演进
  • GPT-4 微调 API 安全漏洞分析:绕过防护与滥用风险
  • Ubuntu 16.04 搭建 SVN 服务器指南
  • jQuery 核心知识详解:语法、DOM 操作与插件应用
  • llama-cpp-python 从安装到性能优化指南
  • NDK 开发入门:C++ 基础与 JNI 调用详解

相关免费在线工具

  • 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