Conda env vs venv / pyenv / virtualenv / etc



要在这里关于pyenv、venv、virtualenv和virtualenvwrapper的伟大问题和讨论中添加一个问题,有人能解释一下conda环境如何适应这个世界吗?与其他虚拟环境选项相比,conda环境的首选用例是什么时候?

更新2021-0602:经过研究、体验和谷歌搜索,我发现了这篇文章。它很详细,我发现了一种有用的方式,并提供了我想要的一切等等。强烈推荐。康达与venv大不相同。

原始答案经过研究和尝试,以下是我的发现,特别是conda环境和venv:之间的差异

  • 高级,conda环境和venv之间没有太大区别。没有太大的性能差异、设置时间差异、复制差异等
  • 使用其中一个或另一个的决定应该主要由个人偏好和工作中的惯例决定(例如,如果你的作品在所有方面都使用venv,那么使用venv而不是conda环境可能是有意义的。(

有一些差异值得一提:

  • Conda环境可以为python和R设置环境,因此如果您在两个Conda之间切换可能更可取,因此您只需要学习一组工具/约定
  • Conda环境都存储在一个文件夹中。这有优点也有缺点:
  • Pro:您可以轻松查找您创建的所有环境
  • Pro:你可以为多个项目重复使用一个环境(例如,我有一个"财务"环境,它适用于我所有的财务相关项目。(
  • 缺点:你必须以不同的方式命名所有环境,并记住它们的名称(或查找它们(
  • 缺点:将环境存储在您创建的项目文件夹中更令人痛苦。这意味着你需要记住哪个环境与哪个项目相关,你不能简单地cd到项目文件夹中,然后激活存储在该文件夹中的通用名称"env">

对于我正在进行的编程类型,我发现conda环境很有帮助。我可以很容易地看到venv是更好选择的用例。

最后,Conda既是一个环境管理器,也是一个像PIP一样的包管理器。这里有有用的对照表。

简言之,如果你还没有强烈的偏好,conda比venv或pip更健壮,可以与pip组合使用,可能是更好的默认选项。也就是说,如果你已经有了强烈的偏好,这意味着你可能已经知道如何做你想做的事,所以不太可能值得改变。

您还可以使用(mini(conda不仅安装不同的python版本(到不同的环境中(,还可以安装node.js、ruby,甚至postgresql等。它有比venv更多的二进制编译包(好吧,所谓的wheels(,您肯定可以使用它来代替pyenv、nvm和rvm等。whiteboxml的链接文章非常好地确定了差异。

我也在窗户上广泛试用过,不得不承认它的效果比我想象的要好。如果出现问题,您可以始终使用WSL2,或者直接切换到macos/linux。

最新更新