venv 与 Anaconda 创建虚拟环境

rob*_*ich 4 python python-venv anaconda

venv 和 Anaconda 创建虚拟环境有什么区别?我授予两者创建一个文件夹,允许我在项目本地安装包,而不是在我的机器上全局安装包。

到目前为止,我的理解是 venv 更加内置且重量更轻,而 Anaconda 更适合那些喜欢点击而不是打字的人。Anaconda 还允许我 pip 安装软件包并启动工具,其中 venv 仅用于创建本地文件夹,并且默认使用 pip 进行软件包安装。

每种方法的优点和缺点是什么?每种工具在什么情况下最好?

我承认这是一个新手问题,类似的问题比较了 pip 和 venv 或讨论了 Anaconda 环境中的 pip。不过,我对虚拟环境中的 venv 和 Anaconda 没有任何疑问。

小智 7

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

不过,我将添加一些我认为 Conda 文档中没有的细节,这将帮助新用户了解更多有关 venv 和 conda 环境管理之间的差异的信息。

Anaconda 环境更笨重,但更全面的 python 环境。anaconda 环境包含

  • python 的特定版本,即 python 3.6.5
  • 然后是该环境中的软件包(例如:pytorch、beautifulsoup4、pandas...)

venv 的虚拟环境管理系统依赖于您的计算机(您的系统)的 python。如果您正在处理两个不同的项目,需要同一包的两个不同版本(例如tensorflow 1.1与2.1),那么这些不同版本的tensorflow具有不同的依赖关系,这可能会很烦人。在这种情况下,为每个项目设置两个 anaconda 环境要容易得多。

然而,anaconda 最大的优势是能够与 jupyter 笔记本进行交互。就我个人而言,我有一些标准的 conda 环境,具体取决于我正在从事的项目类型;这些名称描述了它们的用途,所以我将列出它们。

  • ml_pytorch_3_6_5 - 使用 pytorch 和 python 3.6.5 进行机器学习的环境
  • ml_pytorch_3_8_10 - 用于使用 pytorch 和 python 3.8.10 进行机器学习
  • ml_tensorflow_3_6_5 - 用于使用tensorflow和python 3.6.5进行机器学习
  • web_dev_apache - 用于我使用 apache 服务器的 Web 开发
  • web_dev_nginx - 用于使用 nginx 服务器的 Web 开发

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