venv vs conda

发布时间 2023-06-04 20:37:09作者: 蝈蝈俊

Python的venv模块和Anaconda的conda命令都用于创建和管理Python的虚拟环境,这些环境是隔离的,能够防止不同项目的库版本冲突。

venv

命令python3 -m venv <目录>就可以创建一个独立的Python运行环境。

观察bin目录的内容,里面有python3、pip3等可执行文件,实际上是链接到Python系统目录的软链接。

继续进入bin目录,Linux/Mac用source activate,Windows用activate.bat 激活该venv环境。

退出当前环境用: deactivate

如果不再使用某个venv,例如proj101env,删除它也很简单。
首先确认该venv没有处于“激活”状态,然后直接把整个目录proj101env删掉就行。

conda

常见的conda命令。

# 查看conda版本,验证是否安装
conda -V

# 更新conda至最新版本
conda update conda

# 更新所有包
conda update --all

# 更新指定的包
conda update package_name

# 创建名为env_name的新环境,并在该环境下安装名为package_name 的包,
# 可以指定新环境的版本号,例如:conda create -n python3 python=python3.7 numpy pandas,

# 创建了python3环境,python版本为3.7,同时还安装了numpy pandas包
conda create -n env_name package_name

# 切换至env_name环境
conda activate env_name

退出环境

conda deactivate

# 显示所有已经创建的环境
conda info -e
# 或者使用
conda env list

# 复制old_env_name为new_env_name
conda create --name new_env_name --clone old_env_name

# 删除环境
conda remove --name env_name --all

# 查看所有已经安装的包
conda list

# 在当前环境中安装包
conda install package_name

# 在指定环境中安装包
conda install --name env_name package_name

# 删除指定环境中的包
conda remove -- name env_name package

# 采用上一步方法删除环境失败时,可采用这种方法
conda env remove -n env_name

# 删除当前环境中的包
conda remove package

# 更新默认的conda版本
# 先检查并确认是 base 这个环境
conda env list

# 执行下面命令做默认conda的升级。
conda update anaconda

区别

尽管他们的功能相似,但是他们之间存在一些主要的区别。

包管理器

venv使用Python的内置包管理器pip来管理软件包。Pip是Python的官方包管理器,包含了Python的大部分库。

而conda是Anaconda distribution的包管理器,可以管理Python以及其他非Python的包。

跨平台性

venv是Python的一个内置模块,因此在任何Python环境中都可用。

而conda只在Anaconda distribution中可用。如果你没有安装Anaconda,你就不能使用conda命令。

环境隔离程度

两者都能隔离Python的版本和库,但是conda提供了更深层次的隔离。

例如,conda可以管理不同的Python解释器版本,还可以管理非Python的包,如R包,或是系统级别的库。

库的覆盖面

如果你需要的库是Python的,那么venv和conda都可以很好地完成工作。

但是,如果你需要的库是非Python的,或者是一些科学计算的库,例如numpy, scipy, tensorflow等,那么使用conda会更方便,因为Anaconda distribution包含了这些库的预编译版本,可以方便地安装。

适用场景

哪一个更适合你,取决于你的具体需求。

venv:

如果你的项目只需要Python库,并且不需要特定版本的Python解释器,那么venv是一个很好的选择。这也是大多数Python开发者的默认选择。

conda:

如果你的项目需要一些科学计算的库,或者需要管理非Python的包,那么conda可能是更好的选择。

Anaconda distribution被设计为用于数据科学和机器学习的项目,包含了许多预编译的科学计算库,可以节省你的安装时间。

此外,如果你需要管理不同版本的Python解释器,那么conda也是一个很好的选择。