使用venv还是Anaconda创建虚拟环境?

4
创建虚拟环境,venv和Anaconda有何区别?我知道两者都可以创建文件夹,使我能够在项目中本地安装软件包,而不是全局安装到我的计算机。目前我的理解是venv更内置且轻量级,适合喜欢打字的人使用;而Anaconda则更适合喜欢点击操作的人使用。Anaconda也允许我pip安装软件包和启动工具,而venv只是关于创建本地文件夹,并默认使用pip进行软件包安装。每种方法的优缺点是什么?在哪些情况下使用每个工具最好?我承认这是一个新手问题,类似的问题已经比较了pip和venv或讨论了Anaconda环境中的pip。但我没有找到关于venv和Anaconda用于虚拟环境的问题。

3
https://docs.conda.io/projects/conda/en/latest/user-guide/concepts/environments.html?highlight=venv#virtual-environments - sinoroc
1
这个评论完全让我找到了答案。想把它变成一个回答,这样我就可以投票支持了吗? - robrich
3
我宁愿不提供只有链接的答案,这有点违反规则。请随意编写自己的答案,并包含你从该链接中学到的内容。 - sinoroc
1个回答

7
我想指出问题中sinoroc的评论中的链接是一个足够的答案。

但我会添加一些细节,我认为Conda文档没有提供这些细节,这将有助于新用户了解venv和conda环境管理之间的差异。

Anaconda环境比较笨重,但更为全面。Anaconda环境包含以下内容:

  • 特定版本的Python,例如Python 3.6.5
  • 在该环境中的软件包(例如,pytorch、beautifulsoup4、pandas等)

venv的虚拟环境管理系统依赖于您计算机上的Python(即您系统的Python)。如果您正在处理需要使用相同软件包不同版本的两个不同项目,例如TensorFlow 1.1与2.1,则这些不同版本的TensorFlow具有不同的依赖关系,此时使用两个anaconda环境更容易。

然而,anaconda最大的优点是可以与jupyter笔记本进行交互。个人而言,我根据正在处理的项目类型拥有一些标准conda环境;这些环境的名称描述了它们的用途,因此我将列出它们。

  • ml_pytorch_3_6_5 - 用于使用Python 3.6.5和pytorch进行机器学习的环境
  • ml_pytorch_3_8_10 - 用于使用Python 3.8.10和pytorch进行机器学习的环境
  • ml_tensorflow_3_6_5 - 用于使用Python 3.6.5和TensorFlow进行机器学习的环境
  • web_dev_apache - 用于Web开发,其中使用Apache服务器
  • web_dev_nginx - 用于使用Nginx服务器进行Web开发的环境

这种工作流程比标准的venv管理具有优势,因为我的计算机上有多个不同版本的Python可用于不同目的。由于每个目的的环境都是相当标准的,因此我可以根据所做工作的性质在不同项目之间重复使用一个环境。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接