1. 什么是虚拟环境? #
- 虚拟环境(Virtual Environment)是一个独立的 Python 运行空间,拥有自己的解释器和包目录。
- 可以把每个项目的虚拟环境理解成"专属房间",房间里的包不会影响其他项目。
- Python 3.3+ 内置
venv模块,无需额外安装,是项目开发的标准做法。 - 日常开发中,应在虚拟环境里执行所有
pip install操作,而不是在系统全局环境中安装。
1.1 生活类比 #
- 全局环境:学校的公共图书馆,所有项目共享同一套包
- 虚拟环境:每个学生自己的书桌,放自己需要的书,互不干扰
1.2 虚拟环境解决的核心问题 #
| 问题 | 说明 |
|---|---|
| 版本冲突 | 项目 A 需要 numpy 1.19,项目 B 需要 numpy 1.21,虚拟环境各自独立 |
| 环境隔离 | 每个项目的依赖互不干扰 |
| 便于分享 | 配合 requirements.txt,团队可快速复现相同环境 |
2. 为什么需要虚拟环境? #
- 不同项目往往依赖同一个包的不同版本,全局环境只能装一个版本,必然产生冲突。
- 在系统 Python 中随意安装包会"污染"全局环境,难以清理,还可能影响系统工具。
- 虚拟环境让项目依赖清晰可控,配合
requirements.txt可以一键复现开发环境。 - 这是 Python 社区公认的最佳实践,几乎所有正式项目都会使用虚拟环境。
2.1 典型场景 #
项目 A(旧版 Web):
- Django 3.2
- requests 2.25
项目 B(数据分析):
- pandas 最新版
- numpy 最新版两个项目各自有虚拟环境,可以同时存在,互不干扰。
3. 前置知识 #
- 使用虚拟环境需要在命令行中操作,Windows 可用 CMD 或 PowerShell,macOS/Linux 用终端。
- 虚拟环境中安装包仍然通过 pip 完成,请先掌握pip的基础命令。
- 需要 Python 3.3 及以上版本,
venv模块已内置,一般无需额外安装。 - 创建虚拟环境前,先确认
python --version和pip --version能正常输出。
3.1 快速检查 #
# 检查 Python 版本(需 3.3+)
python --version # Windows
python3 --version # macOS/Linux
# 检查 pip 是否可用
pip --version4. 创建虚拟环境 #
- 建议在每个项目的根目录下创建虚拟环境,文件夹通常命名为
venv。 - 使用
python -m venv venv创建,-m venv表示调用内置的 venv 模块。 - 创建成功后,项目目录下会出现
venv文件夹,里面包含独立的 Python 和 pip。 - 虚拟环境只需创建一次,后续每次开发时激活即可,不需要重复创建。
4.1 创建步骤 #
# 1. 进入项目目录
mkdir my_project
cd my_project
# 2. 创建虚拟环境
python -m venv venv # Windows
python3 -m venv venv # macOS/Linux命令说明:
python -m venv:调用 venv 模块- 最后的
venv:虚拟环境文件夹名称,可改成env等其他名字
5. 激活和退出虚拟环境 #
- 创建虚拟环境后必须激活才能使用,激活后安装的包才会进入该环境。
- 激活成功的标志是命令行前缀出现
(venv),例如(venv) C:\Users\...>。 - 可用
where python(Windows)或which python(macOS/Linux)确认当前 Python 路径指向虚拟环境。 - 工作结束后执行
deactivate退出,前缀(venv)消失即表示回到全局环境。
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,路径应包含 venv5.3 退出虚拟环境 #
deactivate6. 在虚拟环境中安装和使用包 #
- 激活虚拟环境后,所有
pip install操作只影响当前项目,不会改动系统 Python。 - 忘记激活就安装包,是最常见的错误之一,安装前务必确认前缀有
(venv)。 - 安装完成后用
pip list查看,列表中应只包含当前项目需要的包。 - 在虚拟环境中运行
python your_script.py,才能正确导入该环境中安装的包。
6.1 安装包 #
# 先激活虚拟环境(确认前缀有 (venv))
pip install requests numpy
# 查看已安装的包
pip list6.2 在代码中使用 #
# test.py
import requests
response = requests.get('https://www.example.com')
print(f"状态码:{response.status_code}")python test.py7. requirements.txt 与虚拟环境 #
requirements.txt记录项目依赖,是虚拟环境团队协作的核心文件。- 在已激活的虚拟环境中执行
pip freeze > requirements.txt可导出当前所有包及版本。 - 新成员或新机器上,创建虚拟环境后执行
pip install -r requirements.txt即可复现环境。
7.1 导出依赖 #
# 确保虚拟环境已激活
pip freeze > requirements.txt文件内容示例:
numpy==1.21.0
requests==2.26.07.2 从文件安装依赖 #
# 创建并激活新虚拟环境
python -m venv venv
venv\Scripts\activate.bat # Windows
# source venv/bin/activate # macOS/Linux
# 一键安装所有依赖
pip install -r requirements.txt8. 各平台命令对照 #
- 不同操作系统的虚拟环境命令略有差异,主要区别在激活路径和 Python 命令名。
- Windows 用户需注意 CMD 与 PowerShell 的激活脚本不同,PowerShell 可能还需调整执行策略。
- 建议将下表保存为速查参考,日常开发时直接查阅对应平台的命令即可。
deactivate在所有平台上命令相同,无需区分系统。
| 操作 | 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. 完整工作流程 #
- 下面串联虚拟环境在日常项目中的标准流程:建环境 → 激活 → 装依赖 → 写代码 → 导出依赖。
- 这是每个 Python 项目启动时的固定套路,熟练后可以直接套用到任何新项目。
- 分享项目时提交代码和
requirements.txt,不要提交venv/文件夹。 - 其他开发者克隆项目后,按相同步骤创建虚拟环境并安装依赖即可运行。
# 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. 常见问题 #
- Windows PowerShell 激活失败,通常是执行策略限制,需调整策略或改用 CMD。
- 找不到
python命令时,尝试py(Windows)或python3(macOS/Linux)。 - 包装到了全局环境,说明虚拟环境未激活,先确认前缀有
(venv)再安装。 - 删除虚拟环境只需退出后删除
venv文件夹,需要时用requirements.txt重建即可。
10.1 PowerShell 激活失败 #
# 以管理员身份运行 PowerShell,修改执行策略
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
# 或改用 CMD 执行 activate.bat10.2 包安装到了全局环境 #
# 1. 确认是否激活(前缀应有 (venv))
# 2. 检查 Python 路径
where python # Windows
which python # macOS/Linux
# 路径应指向 venv 目录内10.3 删除虚拟环境 #
deactivate
rmdir /s venv # Windows
rm -rf venv # macOS/Linux11. 最佳实践 #
- 每个项目使用一个独立的虚拟环境,不要把多个项目共用一个环境。
- 将
venv/加入.gitignore,只提交requirements.txt,不提交虚拟环境文件夹。 - 安装新包后及时更新
requirements.txt,保持依赖文件与当前环境同步。 - 项目根目录创建虚拟环境,文件夹统一命名为
venv,便于团队识别。
11.1 .gitignore 示例 #
venv/
env/
__pycache__/
*.pyc12. 总结 #
- 虚拟环境是 Python 项目开发的基础设施,为每个项目提供隔离的 Python 和包目录。
- 核心三步:创建(
python -m venv venv)→ 激活 → 在环境中pip install。 - 配合
requirements.txt实现依赖共享,配合.gitignore避免提交环境文件夹。
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 |