为什么以及何时使用新的 anaconda 环境? (一个环境适合一切?每个项目都有一个新环境?)

问题描述 投票:0回答:3

我有一点使用 Anaconda 的经验,并且即将更多地使用它来完成我所有的 Python 数据工作。在开始之前,我有一个简单的问题:“我应该什么时候使用新环境?”

我在 StackOverflow 或网络上的其他地方找不到任何好的、实用的建议。

如果我正在开发的项目依赖于与例如不同的库的特定版本,我了解什么是环境及其好处以及如何做到这一点。该库的最新版本等等……那么虚拟环境就是答案;但是我正在寻求一些关于如何在不同数据项目的日常工作中实际使用它们的建议

从逻辑上讲,似乎(至少)有两种方法:

  1. 使用一个环境,直到您绝对需要一个单独的环境 对于特定项目
  2. 为每个项目使用新环境

我可以看到每种方法的一些优点和缺点,并且想知道是否有可以分享的最佳实践。

如果我应该只使用一个环境,直到需要第二个环境,我应该使用默认的“根”环境并将所有所需的依赖库加载到该环境中,还是最好从我自己的称为其他环境的环境开始?

这个问题的答案“为什么要创建新的安装环境”,由 @codeblooded 提供了一些关于如何使用和处理 conda 环境的提示,并建议了第三种方法,

  1. 根据需要创建新环境,项目不会“生存”在环境内部,而是在运行时使用环境,您最终将获得运行在该计算机上经常使用的项目所需的多个不同的虚拟环境,这可能只是一种环境,也可能有更多

无论如何,你可以看到我正在努力解决这个问题,任何帮助将不胜感激。谢谢!

python conda virtual-environment
3个回答
0
投票

作为与数据科学家合作的开发人员,我强烈建议为每个项目创建一个环境。 python 环境的好处是封装了一个项目与所有其他 python 项目的需求。

在上面的情况下,如果您要在 8 个不同的项目中使用 Python36,那么很容易意外升级软件包或安装冲突的软件包,从而在您没有意识到的情况下破坏其他项目。

在您所做的工作中,这可能不是什么大问题,但考虑到为每个项目创建单独的环境是多么容易,其好处超出了小的时间成本。

我可以告诉你,如果发现与我合作的任何开发人员使用单个 python 环境进行多个开发项目,他们将被指示立即停止这样做。


0
投票

如果我在这里错过了一些东西,我很抱歉,但是考虑到 conda 显然使用了 Package Cache

,关于存储空间的整个讨论是否有效?

这是否意味着如果您按照为每个项目创建新环境的方法并使用与之前项目中已使用的相同的包(这与您共享两个项目的环境相同)项目),那么新环境的大小会接近 0?

这意味着方法 1(为许多项目使用一种环境)实际上没有任何好处,而方法 2(为每个项目使用新环境)也没有缺点。


-1
投票

好吧,我想我自己解决了这个问题。现在看来有点明显了。

您不需要为每个项目创建一个环境。

但是,如果特定项目需要特定版本的库、特定版本的 Python 等,那么您可以创建一个虚拟环境来捕获所有这些依赖项。

举个例子,

  • 假设您正在开发一个项目,该项目需要一个依赖于特定版本的 Python 的库,例如Python 3.6,
  • 并且您的基础(根)环境是 Python 3.7,
  • 您将创建一个新的 anaconda 环境,配置为使用 Python 3.6(也许称之为“Python36”)
  • 您将在该环境中安装所有必需的库,并且在运行该项目时将使用该环境。
  • 当您有另一个需要类似库的项目时,您可以重新使用现有的Python 3.6环境(名为“Python36”)来运行这个新项目,
  • 您不必创建新的 Python 3.6 环境,就像您不必安装多个 Python 3.6 实例来运行多个需要 Python 3.6 的项目一样。
© www.soinside.com 2019 - 2024. All rights reserved.