【问题标题】:Why and when to use a new anaconda environment? (One environment for everything? A new environment for every project?)为什么以及何时使用新的 anaconda 环境? (一个环境适合一切?每个项目都有一个新环境?)
【发布时间】:2020-06-25 21:30:46
【问题描述】:

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

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

如果我正在从事的项目依赖于不同于例如该库的最新版本等等等等......然后虚拟环境就是答案;但是我正在寻求一些建议,以了解如何在我处理不同数据项目的日常工作中实际使用它们

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

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

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

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

@codeblooded 对这个问题 "why create new environment for install" 的回答给了我一些关于如何使用和处理 conda 环境的提示,并提出了第三种方法,

  1. 根据需要创建新环境,项目不会“存在”在环境中,而是在运行时使用环境,您最终将获得运行您经常使用的项目所需的尽可能多的不同虚拟环境机器,可能只是一种环境,也可能更多

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

【问题讨论】:

  • 我将 anaconda 用于 1. 避免冲突的包(版本)并将它们分开。 2. 对我使用的包进行更好的版本控制, 3. 清理包的路径。我通常采用你的第一种方法。
  • @Ashli​​nJP 不是第一种方法在您绝对需要一个特定项目的单独环境之前使用一个环境
  • @AMC 是的。如果有冲突的包或者我需要版本控制来调试,我倾向于使用另一个环境。

标签: python conda virtual-environment


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    好的,我想我自己解决了这个问题。现在似乎有点明显了。

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

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

    举个例子,

    • 假设您正在处理一个项目,该项目需要一个依赖于特定 Python 版本的库,例如Python 3.6,
    • 您的基础(根)环境是 Python 3.7,
    • 您将创建一个配置为使用 Python 3.6 的新 anaconda 环境(可能称其为“Python36”)
    • 您将在该环境中安装所有必需的库,并在运行该项目时使用该环境。
    • 当您有另一个需要类似库的项目时,您可以重新使用现有的 Python 3.6 环境(名为“Python36”)来运行这个新项目,
    • 您不必创建新的 Python 3.6 环境,就像您不必安装多个 Python 3.6 实例来运行多个需要 Python 3.6 的项目一样。

    【讨论】:

    • 你肯定不想为每个项目都创建一个环境。这是什么原因?
    • 我想我可以更好地表达这一点。我已经更改了答案的措辞以包含您的隐式反馈@AMC。尽管如果您可以改进,请务必继续进行编辑/添加。您可能会说我只是刚刚习惯了使用 Anaconda 并且开始变得更有意义,但绝不是专家。我在网上找不到太多的指导来帮助培养关于使用的直觉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多