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

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、灵活指定版本的项目 科学计算/机器学习、跨平台部署

三、选择建议

  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。
相关推荐
弹简特2 分钟前
【Java项目-企悦抽】16-抽奖模块01-获取活动完整信息接口实现
java·开发语言·状态模式·springboot
言乐630 分钟前
Python语音检索
开发语言·python·django·virtualenv·pygame
BD_Marathon1 小时前
多轮对话聊天机器人
开发语言·机器人·c#
泡茶喝茶写代码1 小时前
A股量化数据工程:从 REST 接口到策略信号(第 1 篇):指数列表与实时行情接入
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据接口
Sarvartha1 小时前
接口基础知识
java·开发语言
happylifetree1 小时前
Python34-35:核心语法-流程控制语句-循环-综合案例
python
沐晓时光1 小时前
C语言入门,深入理解指针(1)
c语言·开发语言
AC赳赳老秦1 小时前
OpenClaw 数据引用规范自动生成:为公开数据构建可信来源标注与标准引用体系
大数据·开发语言·汇编·数据库·人工智能·deepseek·openclaw
吃饱了得干活1 小时前
Agent 的记忆与工具:从上下文窗口到 MCP
python·agent·mcp
无忧.芙桃1 小时前
C++语言原理与实践(十):vector类的底层实现
开发语言·c++·算法