Python虚拟环境创建方式对比(含指定Python版本)
在Python开发中,虚拟环境是隔离项目依赖的核心工具,不同创建方式(venv、virtualenv、conda)在版本控制、功能、适用场景上差异显著。以下是整合后的完整对比,重点包含指定Python版本的支持性和核心使用命令。
一、核心创建方式详解(含指定版本命令)
1. venv(Python 3.3+ 内置)
核心特性
- 官方内置,无需额外安装,轻量极简;
- 仅支持Python 3,无直接指定版本的参数,需通过调用对应版本解释器实现版本控制;
- 仅隔离Python依赖,无跨语言支持。
完整使用命令(含指定版本)
bash
# 1. 基础创建(使用当前执行的Python版本)
python -m venv myenv
# 2. 指定Python版本创建(需系统已安装目标版本)
# Mac/Linux(调用对应版本解释器)
python3.9 -m venv myenv39 # 创建Python 3.9的虚拟环境
python3.10 -m venv myenv310 # 创建Python 3.10的虚拟环境
# Windows(需指定解释器完整路径,示例)
C:\Python39\python.exe -m venv myenv39
C:\Users\你的用户名\AppData\Local\Programs\Python\Python310\python.exe -m venv myenv310
# 3. 激活虚拟环境
# Windows (CMD)
myenv\Scripts\activate.bat
# Windows (PowerShell)
.\myenv\Scripts\Activate.ps1
# Mac/Linux
source myenv/bin/activate
# 4. 退出虚拟环境
deactivate
# 5. 删除虚拟环境(直接删除文件夹)
# Mac/Linux
rm -rf myenv39
# Windows
rmdir /s myenv39
2. virtualenv(第三方库,兼容Python 2/3)
核心特性
- 第三方库,需手动安装;
- 兼容Python 2和3,支持通过参数直接指定Python版本;
- 可自定义pip/setuptools版本,仅隔离Python依赖。
完整使用命令(含指定版本)
bash
# 1. 安装virtualenv
pip install virtualenv
# 2. 基础创建(使用默认Python版本)
virtualenv myenv
# 3. 指定Python版本创建(需系统已安装目标版本)
# Mac/Linux(简写-p)
virtualenv -p python3.8 myenv38 # 指定Python 3.8
virtualenv --python=python3.7 myenv37 # 完整参数写法
# Windows(指定解释器路径)
virtualenv -p C:\Python38\python.exe myenv38
# 进阶:同时指定pip版本
virtualenv -p python3.9 --pip=23.0 myenv39
# 4. 激活/退出(与venv完全一致)
# Windows: myenv\Scripts\activate
# Mac/Linux: source myenv/bin/activate
# 退出:deactivate
3. conda(Anaconda/Miniconda 专属)
核心特性
- 需单独安装Miniconda/Anaconda,功能强大;
- 兼容Python 2/3,支持直接指定Python版本,且无需提前安装目标版本(自动下载);
- 支持跨语言依赖(如C/C++、CUDA),自动处理编译型依赖(如numpy、PyTorch底层库)。
完整使用命令(含指定版本)
bash
# 1. 安装Miniconda/Anaconda后执行(无需额外装工具)
# 2. 基础创建(指定Python版本)
conda create -n myenv310 python=3.10 # 创建名为myenv310的Python 3.10环境
# 按提示输入y确认安装
# 3. 指定精确版本/版本范围
conda create -n myenv3108 python=3.10.8 # 精确到小版本
conda create -n myenv python>=3.8,<3.11 # 版本范围
# 4. 激活虚拟环境
conda activate myenv310
# 5. 退出虚拟环境
conda deactivate
# 6. 删除虚拟环境
conda remove -n myenv310 --all # 按提示输入y确认
二、核心特性对比表
| 特性 | venv(内置) | virtualenv(第三方) | conda(Anaconda) |
|---|---|---|---|
| Python版本支持 | 仅Python 3.3+ | Python 2/3 | Python 2/3 |
| 安装方式 | 无需安装(内置) | pip install | 单独安装Miniconda/Anaconda |
| 指定版本的方式 | 调用对应版本解释器(如python3.9 -m venv) | --python/-p 参数指定版本/路径 | create时直接指定python=版本号 |
| 是否需提前装目标Python | 是(系统必须已安装) | 是(系统必须已安装) | 否(conda自动下载) |
| 版本指定灵活性 | 低(仅调用已有版本) | 中高(支持版本/路径,可指定pip版本) | 高(版本号/范围,自动下载) |
| 跨语言支持 | 仅Python | 仅Python | 支持Python/C/C++/CUDA等 |
| 编译型依赖处理 | 弱(需手动解决) | 弱(需手动解决) | 强(自动处理) |
| 系统资源占用 | 小(仅隔离Python) | 小 | 较大(包含系统依赖) |
| 核心适用场景 | 纯Python轻量开发 | 兼容Python 2、灵活指定版本的项目 | 科学计算/机器学习、跨平台部署 |
三、选择建议
- 快速轻量开发(纯Python) :优先用
venv(内置无需安装,满足基础隔离); - 需兼容Python 2/灵活指定版本 :用
virtualenv(-p参数便捷,支持自定义pip版本); - 科学计算/机器学习/跨平台 :用
conda(自动处理编译依赖、自动下载Python版本,无需手动配置)。
总结
- 版本指定能力 :
conda > virtualenv > venv,conda无需提前安装目标Python版本,是指定版本最便捷的方式; - 核心命令差异 :venv依赖解释器路径指定版本,virtualenv用
-p参数,conda直接在create命令中指定python=版本; - 场景适配:纯Python项目选venv/virtualenv,复杂依赖(如数据科学)选conda。