Python的venv模块和Anaconda的conda命令都用于创建和管理Python的虚拟环境,这些环境是隔离的,能够防止不同项目的库版本冲突。
venv
venv是Python的一个标准库,它用于创建隔离的Python环境。每一个venv环境都有自己独立的Python解释器、库和脚本。这种隔离性使得我们可以在不同的项目中使用不同版本的库,而不需要担心库版本之间的冲突。
命令python3 -m venv <目录>就可以创建一个独立的Python运行环境。
观察bin目录的内容,里面有python3、pip3等可执行文件,实际上是链接到Python系统目录的软链接。
继续进入bin目录,Linux/Mac用 source activate,Windows用 activate.bat 激活该venv环境。
退出当前环境用: deactivate
如果不再使用某个venv,例如proj101env,删除它也很简单。
首先确认该venv没有处于“激活”状态,然后直接把整个目录proj101env删掉就行。
参看:
conda
conda 是由 Anaconda 开发的开源跨平台语言无关的包管理器。它用于安装各种包,可以用于Python,R,Ruby,Lua,Scala,Java,JavaScript,C/ C++,FORTRAN等等,尽管Python是最常见的使用情况。
同时,conda也是一个环境管理系统,用于在同一机器上创建有不同Python版本或包集合的隔离环境。
conda在大数据科学、机器学习、深度学习和相关领域特别受欢迎,这是因为它能很好地处理具有复杂依赖关系的大型科学计算包,比如NumPy,SciPy,Pandas等。
conda的优点之一是它的跨平台性,它可以在Windows,macOS和Linux上运行。此外,conda也支持二进制包,这意味着在安装包时无需从源代码编译,这通常比使用Python的默认包管理器pip更快,更容易。
常用的conda命令。
# 查看conda版本,验证是否安装
conda -V
# 更新conda至最新版本
conda update conda
# 更新所有包
conda update --all
# 更新指定的包
conda update package_name
要创建新的conda环境,你可以使用conda create -n [环境名] python=[python版本] [需要安装的包]命令。这将创建一个新的conda环境,并在其中安装指定的Python版本和指定的包。
例如:
conda create -n python3 python=python3.7 numpy pandas
创建了python3环境,python版本为3.7,同时还安装了numpy pandas包
激活环境的命令为conda activate [环境名]
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
conda 有些包没有时,可以考虑如何在 conda 环境中使用 pip 进行安装?
区别
尽管他们的功能相似,但是他们之间存在一些主要的区别。
包管理器
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也是一个很好的选择。
标签:venv,name,Python,环境,vs,conda,env From: https://www.cnblogs.com/ghj1976/p/venv-vs-conda.html