1. 什么是虚拟环境? #

1.1 生活类比 #

1.2 虚拟环境解决的核心问题 #

问题 说明
版本冲突 项目 A 需要 numpy 1.19,项目 B 需要 numpy 1.21,虚拟环境各自独立
环境隔离 每个项目的依赖互不干扰
便于分享 配合 requirements.txt,团队可快速复现相同环境

2. 为什么需要虚拟环境? #

2.1 典型场景 #

项目 A(旧版 Web):
  - Django 3.2
  - requests 2.25

项目 B(数据分析):
  - pandas 最新版
  - numpy 最新版

两个项目各自有虚拟环境,可以同时存在,互不干扰。

3. 前置知识 #

3.1 快速检查 #

# 检查 Python 版本(需 3.3+)
python --version        # Windows
python3 --version       # macOS/Linux

# 检查 pip 是否可用
pip --version

4. 创建虚拟环境 #

4.1 创建步骤 #

# 1. 进入项目目录
mkdir my_project
cd my_project

# 2. 创建虚拟环境
python -m venv venv        # Windows
python3 -m venv venv       # macOS/Linux

命令说明:

5. 激活和退出虚拟环境 #

5.1 激活命令 #

# Windows CMD
venv\Scripts\activate.bat

# Windows PowerShell
venv\Scripts\Activate.ps1

# macOS/Linux
source venv/bin/activate

激活前后对比:

# 激活前
C:\Users\YourName>

# 激活后
(venv) C:\Users\YourName>

5.2 验证是否激活 #

where python     # Windows,路径应包含 venv

D:\aprepare\my_project\venv\Scripts\python.exe
C:\Users\Administrator\AppData\Local\Programs\Python\Python313\python.exe

which python     # macOS/Linux,路径应包含 venv

5.3 退出虚拟环境 #

deactivate

6. 在虚拟环境中安装和使用包 #

6.1 安装包 #

# 先激活虚拟环境(确认前缀有 (venv))
pip install requests numpy

# 查看已安装的包
pip list

6.2 在代码中使用 #

# test.py
import requests

response = requests.get('https://www.example.com')
print(f"状态码:{response.status_code}")
python test.py

7. requirements.txt 与虚拟环境 #

7.1 导出依赖 #

# 确保虚拟环境已激活
pip freeze > requirements.txt

文件内容示例:

numpy==1.21.0
requests==2.26.0

7.2 从文件安装依赖 #

# 创建并激活新虚拟环境
python -m venv venv
venv\Scripts\activate.bat        # Windows
# source venv/bin/activate       # macOS/Linux

# 一键安装所有依赖
pip install -r requirements.txt

8. 各平台命令对照 #

操作 Windows (CMD) Windows (PowerShell) macOS/Linux
创建环境 python -m venv venv python -m venv venv python3 -m venv venv
激活环境 venv\Scripts\activate.bat venv\Scripts\Activate.ps1 source venv/bin/activate
退出环境 deactivate deactivate deactivate
删除环境 rmdir /s venv rmdir /s venv rm -rf venv

9. 完整工作流程 #

# 1. 创建项目目录
mkdir my_project && cd my_project

# 2. 创建虚拟环境
python -m venv venv

# 3. 激活
venv\Scripts\activate.bat        # Windows
# source venv/bin/activate       # macOS/Linux

# 4. 安装依赖
pip install requests pandas
pip freeze > requirements.txt

# 5. 运行项目
python main.py

# 6. 退出
deactivate

推荐项目结构:

my_project/
├── venv/              # 虚拟环境(不提交 Git)
├── main.py            # 项目代码
├── requirements.txt   # 依赖列表(提交 Git)
└── .gitignore         # 忽略 venv/

10. 常见问题 #

10.1 PowerShell 激活失败 #

# 以管理员身份运行 PowerShell,修改执行策略
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

# 或改用 CMD 执行 activate.bat

10.2 包安装到了全局环境 #

# 1. 确认是否激活(前缀应有 (venv))
# 2. 检查 Python 路径
where python     # Windows
which python     # macOS/Linux
# 路径应指向 venv 目录内

10.3 删除虚拟环境 #

deactivate
rmdir /s venv        # Windows
rm -rf venv          # macOS/Linux

11. 最佳实践 #

11.1 .gitignore 示例 #

venv/
env/
__pycache__/
*.pyc

12. 总结 #

12.1 核心命令 #

python -m venv venv                        # 创建虚拟环境
venv\Scripts\activate.bat                  # 激活(Windows CMD)
venv\Scripts\Activate.ps1                  # 激活(Windows PowerShell)
source venv/bin/activate                   # 激活(macOS/Linux)
pip install -r requirements.txt            # 安装项目依赖
pip freeze > requirements.txt              # 导出依赖
deactivate                                 # 退出虚拟环境

12.2 核心要点 #

要点 说明
一项目一环境 避免不同项目依赖冲突
先激活再安装 确保包装入虚拟环境而非全局
不提交 venv/ 通过 requirements.txt 复现环境
及时更新依赖文件 安装新包后执行 pip freeze