保姆级教程:Python虚拟环境的创建、进入与退出(附uv/pip双版本)
在Python开发中,"环境污染"是新手最容易踩的坑------不同项目依赖不同版本的包(比如A项目用Django 3.2,B项目用Django 4.2),全局安装会导致依赖冲突、项目运行异常。而虚拟环境就是解决这个问题的核心方案:为每个项目创建独立的Python运行环境,隔离依赖包,互不干扰。
本文会从"为什么用虚拟环境"讲起,手把手教你用两种工具(传统pip+venv、新一代工具uv)完成虚拟环境的创建→进入→退出→管理,覆盖Windows/macOS/Linux全平台,新手也能一键上手。
一、为什么一定要用虚拟环境?
先看一个真实场景:
你开发项目A时安装了requests==2.25.0,后来开发项目B需要requests==2.31.0,直接用pip install requests升级后,项目A因为依赖版本不兼容直接报错。
而虚拟环境的核心价值就是:
- 隔离依赖:每个项目的包安装在独立目录,版本互不影响;
- 简化部署:可导出依赖清单(requirements.txt),一键复现环境;
- 避免权限问题:无需sudo/管理员权限安装包,不污染系统全局Python;
- 适配多项目:同一台机器可同时运行Python 3.8/3.10/3.12的项目。
二、工具选择:pip+venv vs uv
| 工具 | 特点 | 适用场景 |
|---|---|---|
| pip+venv | Python内置,无需额外安装,兼容性强 | 新手入门、简单项目 |
| uv | 新一代包管理工具,速度快10-100倍,内置venv | 大型项目、依赖复杂场景 |
下面分别讲解两种工具的使用方法,你可根据需求选择。
三、基础版:用pip+venv管理虚拟环境
venv是Python 3.3+内置的虚拟环境模块,无需额外安装,配合pip即可完成所有操作。
1. 创建虚拟环境
步骤1:进入项目目录
先打开终端(Windows:PowerShell/CMD;macOS/Linux:终端),切换到你的项目目录(比如E:\mcp\mcp-prometheus):
bash
# Windows
cd E:\mcp\mcp-prometheus
# macOS/Linux
cd ~/projects/mcp-prometheus
步骤2:创建虚拟环境
执行以下命令,会在项目目录下生成一个.venv文件夹(虚拟环境的核心文件):
bash
# 通用命令:python -m venv 虚拟环境名称(推荐用.venv,隐藏文件夹更整洁)
python -m venv .venv
-
若系统有多个Python版本(比如Python 3.8/3.10),需指定版本:
bash# Windows python3.10 -m venv .venv # macOS/Linux python3.10 -m venv .venv
2. 进入(激活)虚拟环境
激活后终端会显示(.venv)前缀,代表已进入隔离环境,此时pip install的包都会安装到.venv中。
| 操作系统/终端 | 激活命令(.venv为例) |
|---|---|
| Windows (CMD) | .venv\Scripts\activate.bat |
| Windows (PowerShell) | .venv\Scripts\Activate.ps1 |
| macOS/Linux (bash/zsh) | source .venv/bin/activate |
示例(Windows PowerShell):
powershell
# 进入项目目录
cd E:\mcp\mcp-prometheus
# 激活虚拟环境
.venv\Scripts\Activate.ps1
# 激活后终端显示
(.venv) PS E:\mcp\mcp-prometheus>
⚠️ 注意:PowerShell首次激活可能报错"禁止运行脚本",执行以下命令放宽权限(仅当前用户生效):
powershell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
按提示输入Y确认即可。
3. 退出虚拟环境
无论哪个系统/终端,退出命令完全通用:
bash
deactivate
执行后终端的(.venv)前缀消失,回到系统全局Python环境。
4. 再次进入虚拟环境
虚拟环境一旦创建,只要不删除.venv文件夹,可无限次重复进入:
bash
# 只需再次执行激活命令即可
# Windows PowerShell
cd E:\mcp\mcp-prometheus
.venv\Scripts\Activate.ps1
四、进阶版:用uv管理虚拟环境(更快更省心)
uv是Astral Labs推出的新一代Python包管理工具,内置虚拟环境功能,安装/解析依赖的速度远超pip,且兼容pip的所有操作。
1. 安装uv
bash
# macOS/Linux/Windows (PowerShell)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 备用方案:用pip安装
pip install uv
验证安装:
bash
uv --version
2. 创建虚拟环境
进入项目目录后,一行命令即可创建:
bash
# 进入项目目录
cd E:\mcp\mcp-prometheus
# 创建虚拟环境(默认生成.venv文件夹)
uv venv
- 自定义虚拟环境名称:
uv venv myenv(生成myenv文件夹)。
3. 进入/退出虚拟环境
uv创建的虚拟环境本质是标准Python venv,因此进入/退出命令和pip+venv完全一致:
bash
# 进入(Windows PowerShell)
.venv\Scripts\Activate.ps1
# 退出(通用)
deactivate
✨ uv专属懒人技巧:无需激活,直接运行
uv最方便的特性是------无需手动激活虚拟环境,用uv run可直接调用.venv中的Python/包:
bash
# 无需激活,直接运行项目脚本
uv run python main.py
# 无需激活,直接安装依赖
uv pip install -e .
# 无需激活,直接进入Python交互环境
uv run python
五、虚拟环境核心操作(补充)
1. 验证虚拟环境是否生效
激活后执行以下命令,可确认当前使用的是虚拟环境内的Python:
bash
# 查看Python路径(指向.venv文件夹)
which python # macOS/Linux
where python # Windows
# 查看已安装的包
uv pip list # uv方式
pip list # 兼容方式
2. 删除虚拟环境
若项目不再需要,直接删除.venv文件夹即可:
bash
# Windows
rmdir /s .venv
# macOS/Linux
rm -rf .venv
3. 导出/导入依赖清单
激活虚拟环境后,可导出当前依赖到requirements.txt:
bash
# uv方式(推荐)
uv pip freeze > requirements.txt
# pip方式
pip freeze > requirements.txt
新环境中一键安装依赖:
bash
uv pip install -r requirements.txt
六、常见问题排查
1. 激活虚拟环境时报错"找不到文件"
- 原因:未进入项目目录,或虚拟环境名称写错(比如用
myenv却执行.venv的激活命令); - 解决:先
cd到项目根目录,确认.venv文件夹存在,再执行激活命令。
2. 退出后再次进入,依赖包消失
- 原因:误删除
.venv文件夹,或激活了其他目录的虚拟环境; - 解决:重新创建虚拟环境,执行
uv pip install -r requirements.txt恢复依赖。
3. Windows PowerShell激活脚本报错
- 原因:执行策略限制;
- 解决:执行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,按提示输入Y。
七、总结
- 核心流程 :创建(
python -m venv .venv/uv venv)→ 进入(激活命令)→ 退出(deactivate); - 跨平台激活命令 :
- Windows CMD:
.venv\Scripts\activate.bat; - Windows PowerShell:
.venv\Scripts\Activate.ps1; - macOS/Linux:
source .venv/bin/activate;
- Windows CMD:
- 工具选择 :新手用
pip+venv,追求效率用uv(无需激活直接运行); - 关键原则:每个项目对应一个虚拟环境,避免依赖冲突。
虚拟环境是Python开发的基础规范,养成"先建环境,再写代码"的习惯,能大幅减少依赖问题,让开发更高效。