Conda env vs venv / pyenv / virtualenv / 等

Conda env vs venv / pyenv / virtualenv / etc

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

更新 2021-0602: 经过研究、体验和谷歌搜索,我发现 this article。它很详细,以我发现的一种有用的方式自以为是,并提供了我正在寻找的一切等等。极力推荐。 Conda 与 venv 完全不同。

原答案 经过研究和尝试,这是我的发现,特别关注 conda 环境和 venv 之间的区别:

  • 高水平,conda 环境和 venv 之间没有太大区别。没有大的性能差异、设置时间差异、复制差异等
  • 使用其中一种的决定应主要取决于个人喜好和工作惯例(例如,如果您的工作对所有内容都使用 venv,则使用 venv 而不是 conda 环境可能更有意义。)

有一些差异值得指出:

  • Conda 环境可以为 python 和 R 设置环境,所以如果你在这两个 conda 之间切换可能更可取,所以你只需要学习一套 tools/conventions.
  • Conda 环境都存储在一个文件夹中。这有利有弊:
  • 专业版:您可以轻松查看您创建的所有环境。
  • 专业人士:您可以为多个项目重复使用一个环境(例如,我有一个“财务”环境,它适用于我所有与财务相关的项目。)
  • 缺点:您必须以不同方式命名所有环境,并记住这些名称(或查找它们)。
  • 缺点:将该环境存储在您创建的项目文件夹中更麻烦。这意味着您需要记住哪个环境与哪个项目相关,并且您不能简单地 cd 进入项目文件夹,然后激活存储在该文件夹中的通用名称 'env'。

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

最后,Conda 既是环境管理器,又是像 PIP 一样的包管理器。 Useful comparison table here.

简而言之,如果您还没有强烈的偏好,conda 比 venv 或 pip 更健壮,可以与 pip 结合使用,并且可能是更好的默认选项。也就是说,如果您已经有强烈的偏好,则意味着您可能已经知道如何做自己想做的事,因此不太值得改变。