保姆级教程:Python虚拟环境的创建、进入与退出(附uv/pip双版本)

保姆级教程: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因为依赖版本不兼容直接报错。

而虚拟环境的核心价值就是:

  1. 隔离依赖:每个项目的包安装在独立目录,版本互不影响;
  2. 简化部署:可导出依赖清单(requirements.txt),一键复现环境;
  3. 避免权限问题:无需sudo/管理员权限安装包,不污染系统全局Python;
  4. 适配多项目:同一台机器可同时运行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

七、总结

  1. 核心流程 :创建(python -m venv .venv/uv venv)→ 进入(激活命令)→ 退出(deactivate);
  2. 跨平台激活命令
    • Windows CMD:.venv\Scripts\activate.bat
    • Windows PowerShell:.venv\Scripts\Activate.ps1
    • macOS/Linux:source .venv/bin/activate
  3. 工具选择 :新手用pip+venv,追求效率用uv(无需激活直接运行);
  4. 关键原则:每个项目对应一个虚拟环境,避免依赖冲突。

虚拟环境是Python开发的基础规范,养成"先建环境,再写代码"的习惯,能大幅减少依赖问题,让开发更高效。