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

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

【免费下载链接】uvAn extremely fast Python package installer and resolver, written in Rust. 项目地址: https://gitcode.com/GitHub_Trending/uv/uv

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

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

读完本文后,你将能够:

  • 使用uv快速创建虚拟环境
  • 在不同操作系统下激活虚拟环境
  • 灵活指定和管理Python版本
  • 解决多项目环境冲突问题
  • 利用uv的高级特性提升开发效率

uv虚拟环境基础

什么是虚拟环境

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

uv虚拟环境的优势

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

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

安装uv

在开始使用uv管理虚拟环境之前,需要先安装uv。以下是在不同操作系统上的安装方法:

Linux和macOS

curl -LsSf https://gitcode.com/GitHub_Trending/uv/uv/releases/latest/download/uv-installer.sh | sh 

Windows

powershell -c "irm https://gitcode.com/GitHub_Trending/uv/uv/releases/latest/download/uv-installer.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> (如 cpythoncp)
  • <implementation>@<version> (如 [email protected])
  • <implementation><version> (如 cpython3.12cp312)

选择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生态中虚拟环境管理的首选工具。

进一步学习资源

  • uv官方文档:https://gitcode.com/GitHub_Trending/uv/uv
  • uv GitHub仓库:https://gitcode.com/GitHub_Trending/uv/uv
  • Python虚拟环境最佳实践:https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/

希望本文能帮助你更好地理解和使用uv进行虚拟环境管理。如有任何问题或建议,欢迎在评论区留言讨论。如果你觉得本文对你有帮助,请点赞、收藏并关注,以获取更多Python开发技巧和工具介绍。

下期预告:《uv包管理高级技巧:依赖解析与版本控制》

【免费下载链接】uvAn extremely fast Python package installer and resolver, written in Rust. 项目地址: https://gitcode.com/GitHub_Trending/uv/uv

Read more

Spatial Joy 2025 全球 AR&AI 赛事:开发者要的资源、玩法、避坑攻略都在这

Spatial Joy 2025 全球 AR&AI 赛事:开发者要的资源、玩法、避坑攻略都在这

Spatial Joy 2025 全球 AR&AI 赛事:开发者要的资源、玩法、避坑攻略都在这 * 引言: * 正文: * 一、赛事核心价值:资源、履历、落地全具备 * 1.1 硬核资源支持 * 1.2 行业背书与机遇 * 1.3 低门槛试错 * 二、赛道核心玩法:AI 和 AR 创作方向解析 * 2.1 AI 赛道:拼的是 "空间认知协作" 能力 * 2.1.1 应用示例 * 2.2 AR 赛道:

By Ne0inhk
论文阅读--Agent AI 探索多模态交互的前沿领域(一)

论文阅读--Agent AI 探索多模态交互的前沿领域(一)

这篇文章是近来介绍 Agent AI 非常全面的一篇综述,围绕多模态交互与通用人工智能(AGI)的发展需求展开,融合了学术研究积累、技术突破与行业应用诉求。整篇文章的结构如下: 摘要 多模态人工智能系统有望在我们的日常生活中普及。让这些系统具备更强交互性的一个有效途径,是将其作为智能体(Agent)嵌入物理与虚拟环境中。目前,现有系统以大型基础模型为核心构建模块来打造具象化智能体(embodied agents)。将智能体嵌入此类环境,能助力模型处理和解读视觉信息与上下文数据 —— 这对于开发更复杂、更具上下文感知能力的人工智能系统至关重要。例如,一个能够感知用户动作、人类行为、环境物体、音频表达及场景整体情绪的系统,可用于指导智能体在特定环境中做出合理响应。 为推动基于智能体的多模态智能研究,本文将 “智能体人工智能(Agent AI)” 定义为一类交互式系统:这类系统能够感知视觉刺激、语言输入及其他基于环境的数据,并能产生有意义的具象化动作。具体而言,我们探索的系统旨在通过整合外部知识、多感官输入和人类反馈,基于 “下一具象化动作预测” 来优化智能体性能。我们认为,通过在真实

By Ne0inhk
AirSim无人机仿真入门(一):实现无人机的起飞与降落

AirSim无人机仿真入门(一):实现无人机的起飞与降落

概述: 安装好所需要的软件和环境,通过python代码控制无人机进行起飞和降落。 参考资料: 1、知乎宁子安大佬的AirSim教程(文字教程,方便复制) 2、B站瑜瑾玉大佬的30天RL无人机仿真教程(视频教程,方便理解) 3、AirSim官方手册(资料很全,不过是纯英文的) AirSim无人机仿真入门(一):实现无人机的起飞与降落 * 1 安装AirSim * 1.1 参考教程 * 1.2 内容梳理 * 1.3 步骤总结 * 2 开始使用 AirSim * 2.1 参考教程 * 2.2 内容梳理 * 2.3 步骤总结 * 3 撰写python控制程序 * 3.1 参考教程 * 3.2 内容梳理

By Ne0inhk
【大模型应用篇】用 OpenClaw + 飞书打造 7x24 小时服务器运维机器人

【大模型应用篇】用 OpenClaw + 飞书打造 7x24 小时服务器运维机器人

前言 本文基于OpenClaw,也是最近超火的可在本地运行的AI Agent网关,记录从零搭建通过飞书对话管理服务器运维机器人的全过程。该机器人支持随时随地通过飞书查看服务器状态、检索日志、管理进程,其核心机制在于:由OpenClaw将聊天平台(飞书等)的消息路由至大模型,模型调用本地工具(如Shell、文件系统、浏览器)执行相应任务,最终将结果自动返回至飞书会话中,实现自动化运维交互。 架构概览 飞书 App (WebSocket 长连接)         ↕ OpenClaw Gateway (服务器上 systemd 常驻)         ↕ AI 模型 (DeepSeek v3.2/GLM 4.7)         ↕ 服务器 Shell (受白名单限制的命令执行) 核心组件: * OpenClaw Gateway:Agent 网关,管理会话、工具调用、渠道连接 * 飞书插件:通过

By Ne0inhk