Python创建虚拟环境的方式对比与区别?

Python虚拟环境创建方式对比(含指定Python版本)

在Python开发中,虚拟环境是隔离项目依赖的核心工具,不同创建方式(venvvirtualenvconda)在版本控制、功能、适用场景上差异显著。以下是整合后的完整对比,重点包含指定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、灵活指定版本的项目 科学计算/机器学习、跨平台部署

三、选择建议

  1. 快速轻量开发(纯Python) :优先用venv(内置无需安装,满足基础隔离);
  2. 需兼容Python 2/灵活指定版本 :用virtualenv-p参数便捷,支持自定义pip版本);
  3. 科学计算/机器学习/跨平台 :用conda(自动处理编译依赖、自动下载Python版本,无需手动配置)。

总结

  1. 版本指定能力conda > virtualenv > venv,conda无需提前安装目标Python版本,是指定版本最便捷的方式;
  2. 核心命令差异 :venv依赖解释器路径指定版本,virtualenv用-p参数,conda直接在create命令中指定python=版本
  3. 场景适配:纯Python项目选venv/virtualenv,复杂依赖(如数据科学)选conda。
相关推荐
geovindu1 小时前
python: Bridge Pattern
python·设计模式·桥接模式
搞程序的心海1 小时前
Python面试题(一):5个最常见的Python基础问题
开发语言·python
宝贝儿好4 小时前
【强化学习实战】第十一章:Gymnasium库的介绍和使用(1)、出租车游戏代码详解(Sarsa & Q learning)
人工智能·python·深度学习·算法·游戏·机器学习
程序媛一枚~7 小时前
✨✨✨使用Python,OpenCV及图片拼接生成❤️LOVE❤️字样图,每张小图加随机颜色边框,大图加随机大小随机颜色边框
图像处理·python·opencv·numpy·图像拼接
MediaTea8 小时前
Python:collections.Counter 常用函数及应用
开发语言·python
如若1238 小时前
flash-attn 安装失败?从报错到成功的完整排雷指南(CUDA 12.8 + PyTorch 2.7)
人工智能·pytorch·python
007张三丰8 小时前
知乎高赞回答爬虫:从零开始,建立你的专属知识库
爬虫·python·知识库·python爬虫·知乎·高赞回答