Python 虚拟环境创建(venv)
虚拟环境是一个独立的 Python 运行空间,拥有自己的解释器、安装包和配置,与系统全局环境完全隔离。
Python 虚拟环境(Virtual Environment)是一个独立的 Python 运行环境,它允许你在同一台机器上为不同的项目创建隔离的 Python 环境。
不同项目可以在各自的虚拟环境中并行运行,互不干扰。
每个虚拟环境都有自己的:
- Python 解释器
- 安装的包/库
- 环境变量
虚拟环境让每个项目拥有独立的依赖空间,彻底消除版本冲突
为什么需要虚拟环境
Section titled “为什么需要虚拟环境”- 项目隔离:不同项目可使用不同版本的 Python 和第三方库
- 避免污染:安装的包只影响当前环境,不污染全局 Python
- 依赖可控:通过
requirements.txt精确记录和复现环境 - 安全测试:可以放心升级或试用新包,不影响其他项目
场景举例:
- 项目 A 需要 Django 3.2 版本
- 项目 B 需要 Django 4.0 版本
- 如果在系统全局安装,两个版本会冲突
虚拟环境工具
Section titled “虚拟环境工具”| 工具名称 | 类型 | Python版本支持 | 安装方式 | 特点 | 适用场景 |
|---|---|---|---|---|---|
| venv(推荐) | 内置模块 | ≥ 3.3 | 无需安装,内置 | 轻量级、官方推荐、使用简单 | 通用开发、日常项目 |
| virtualenv | 第三方工具 | 2.x 和 3.x | pip install virtualenv |
功能丰富、兼容多版本 | 需要兼容旧版本或高级功能 |
| conda | Anaconda自带 | 2.x 和 3.x | 随 Anaconda/Miniconda 安装 | 跨语言包管理、数据科学生态 | 数据科学、机器学习项目 |
若需更老版本支持,可使用 virtualenv(Python 2兼容):
本章节我们将使用 venv 创建和管理虚拟环境。
创建虚拟环境
Section titled “创建虚拟环境”Python 3.3+ 内置了 venv 模块,无需额外安装。
使用流程总览
Section titled “使用流程总览”1 创建 python -m venv 2 激活 activate 3 安装依赖 pip install 4 开发调试 python / run 5 停用 deactivate
检查 Python 版本:
创建虚拟环境:
例如,创建一个名为 .venv 的虚拟环境:
参数说明:
-m venv:使用 venv 模块.venv:虚拟环境的名称(可以自定义)
创建后的目录结构
Section titled “创建后的目录结构”激活虚拟环境
Section titled “激活虚拟环境”激活后,当前终端的 python 和 pip 命令将自动指向该虚拟环境,所有安装操作均在隔离空间内进行。
macOS / Linux
Section titled “macOS / Linux”Windows(CMD / PowerShell)
Section titled “Windows(CMD / PowerShell)”激活成功后,命令行提示符通常会显示环境名称:
验证激活是否生效:
使用虚拟环境
Section titled “使用虚拟环境”在激活的环境中,使用 pip 安装的包只会影响当前环境:
例如:
查看已安装的包
Section titled “查看已安装的包”使用 requirements.txt 记录和复现项目环境,是团队协作的标准做法:
requirements.txt 文件内容示例:
从文件安装依赖
Section titled “从文件安装依赖”提示: 将 .venv/ 加入 .gitignore,只提交 requirements.txt。虚拟环境体积大且路径绑定,不应纳入版本控制。
退出虚拟环境
Section titled “退出虚拟环境”当完成工作后,可以退出虚拟环境:
退出后,命令行提示符会恢复正常,Python 和 pip 命令将使用系统全局版本。
删除虚拟环境
Section titled “删除虚拟环境”要删除虚拟环境,只需删除对应的目录即可:
删除虚拟环境
Section titled “删除虚拟环境”虚拟环境本质上是一个普通目录,删除目录即彻底移除:
macOS / Linux
Section titled “macOS / Linux”Windows
Section titled “Windows”注意:删除前请先执行 deactivate 退出环境,否则当前 Shell 会保留失效的环境变量。
实际项目示例
Section titled “实际项目示例”假设开发一个 Django 项目:
指定 Python 版本
Section titled “指定 Python 版本”如果你安装了多个 Python 版本,可以指定使用哪个版本来创建虚拟环境:
创建不带 pip 的环境
Section titled “创建不带 pip 的环境”创建继承系统包的虚拟环境
Section titled “创建继承系统包的虚拟环境”常见问题解答
Section titled “常见问题解答”1. 为什么我的虚拟环境没有 activate 脚本?
Section titled “1. 为什么我的虚拟环境没有 activate 脚本?”确保你使用的是正确的路径:
- Windows:
Scripts\activate - Unix/Linux:
bin/activate
2. 如何知道当前是否在虚拟环境中?
Section titled “2. 如何知道当前是否在虚拟环境中?”检查命令行提示符是否有环境名称前缀,或运行:
3.安装包速度慢
Section titled “3.安装包速度慢”使用国内镜像源:
查看 Python 解释器的路径是否在虚拟环境目录中。
4. 虚拟环境可以移动位置吗?
Section titled “4. 虚拟环境可以移动位置吗?”不建议。虚拟环境内的脚本和配置文件中硬编码了绝对路径,移动后会失效。如需迁移,最简单的方式是重新创建环境并通过 requirements.txt 恢复依赖。
5. 虚拟环境会占用多少空间?
Section titled “5. 虚拟环境会占用多少空间?”空环境约 20–50 MB,随安装的包增多而增加。数据科学项目(NumPy、Pandas、PyTorch)可能达到数 GB。定期清理不再使用的虚拟环境是个好习惯。
- 每个项目独立一个环境:避免不同项目的依赖相互影响
- 统一命名为
.venv:大多数 IDE(VS Code、PyCharm)可自动识别 - 及时更新
requirements.txt:每次pip install后同步导出 - 版本控制中忽略虚拟环境:在
.gitignore中添加.venv/ - 定期清理废弃环境:释放磁盘空间
- 生产环境固定版本号:
requirements.txt中明确写==版本,避免意外升级