更新Anaconda和Conda基础和环境的正确方法是什么?

时间:2019-08-29 00:37:19

标签: anaconda conda

只是想知道什么是更新Anaconda和Conda安装和虚拟环境的正确方法。这是我一步一步的困惑:

  1. 当我运行命令conda update anaconda时,它将更新/降级许多软件包。
  2. 然后我运行了conda update conda,它再次更新/降级了某些软件包。
  3. 接下来,我运行conda update --update-all,它开始降级/升级不同的软件包。
  4. 最后,为了确保所有内容都已更新,我再次运行了conda update anaconda。我原本希望收到一切都最新之类的消息,但令我惊讶的是,它又显示了一大堆需要再次更新/降级的软件包?

    我在这里做错了什么?在我看来,我似乎正在绕这些命令。有帮助吗?

4 个答案:

答案 0 :(得分:2)

您本身并没有做错任何事,但在同一环境中运行conda update anacondaconda update --all只是没有多大意义-它们代表两种完全不同的配置。

更新Anaconda

Anaconda是一个Python发行版,将大量的软件包捆绑在一起。大概要进行大量测试,以验证所有软件包版本和内部版本是否相互兼容。由于这样做需要时间,因此Anaconda团队仅每两个月左右发布新发行版(即新的anaconda版本)。如果您需要一组经过测试可互操作性的稳定软件包,请执行conda update anaconda

全部更新

在Anaconda发行版之间,许多软件包的新版本仍会在Anaconda频道上发行,如果运行conda update --all,将不可避免地领先于anaconda捆绑包中指定的版本。 。如果您希望生活在最前沿,而对于软件包的构建可能尚未经过完整的集成测试,请运行conda update --all。以这种方式生活的大多数人似乎更喜欢Conda Forge,因为它倾向于发布较新的软件包。

我认为,如果您仍然要将大多数软件包切换到Conda Forge,则没有必要安装Anaconda。相反,只需安装Miniconda并仅从开始就从Conda Forge安装所需的内容。

更新Conda

例外是conda,这是您用来管理软件包和环境的基础设施。这样,就应该像其他任何程序包管理器(例如piphomebrew)一样进行更新。

不更新

就个人而言,一旦我加强了项目的要求,我将很少在环境上运行conda update每次更新环境时,您都冒着破坏已经编写的代码的风险。相反,Conda使得创建新环境非常容易,如果它们与其他环境有很多重叠,则由于sharing packages across envs via hardlinking,环境会变得很轻。

答案 1 :(得分:0)

另一种方式就是

anaconda-navigator

下面是生成的GUI图像,关于此问题的唯一区别是您看到“已安装”的地方,其中有一个“可更新”的下拉菜单,您只需单击依赖项即可为任何给定环境进行更新。

Anaconda navigator

常规信息

我敢肯定,每个人都知道这一点,但是对于那些不使用Anaconda导航器的人来说,只需单击一下GUI,就已经成为Anaconda的一部分,并且对于管理,安装,更新和删除所有依赖项非常出色。

关于这个问题,非常适合管理新环境中的所有依赖关系,创建新环境,加载新通道。如果在远程群集/服务器上加载了Anaconda,则可以通过X11远程运行。

对我来说,好处是我从未知道它会失败。

答案 2 :(得分:0)

在Anaconda有用的post中找到了答案

保持最新的Anaconda

下面是一个经常被问到的问题,我认为发布一个答案来解释Anaconda的最新更新方式将很有帮助。该问题最初是在StackOverflow上提出的。

  

我的计算机上安装了Anaconda,我想对其进行更新。在   导航器我看到有几个单独的软件包   可以更新,但是anaconda程序包有时会有一个   版本号,有时说自定义。我该如何进行?

答案

95%的人实际想要什么 在大多数情况下,当您说要更新Anaconda时,要做的是执行以下命令:

conda update --all

这会将当前环境中的所有软件包更新到最新版本-较小的字样是它可能会使用某些软件包的旧版本以满足相关性约束(通常不需要,并且在需要时)打包计划求解程序将尽其所能以最大程度地减少影响)。

这需要从命令行执行,而到达那的最佳方法是从Anaconda Navigator,然后是“环境”选项卡,然后单击根环境旁边的三角形,选择“打开终端”:

此操作将仅更新一个选定的环境(在本例中为根环境)。如果您要更新其他环境,则可以重复上述过程,但请先单击该环境。选择该选项后,右侧会出现一个三角形标记(请参见上图,第3步)。或者,可以从命令行提供环境名称(-n envname)或路径(-p / path / to / env)。例如,要从上面的屏幕截图更新dspyr环境:

conda update -n dspyr --all

更新单个软件包

如果您只对更新单个软件包感兴趣,则只需在导航器中单击蓝色箭头或蓝色版本号,例如上面的屏幕快照中的astroid或astropy,这将标记这些软件包以进行升级。完成后,您需要单击“应用”按钮:

或从命令行:

conda update astroid astropy

仅更新标准Anaconda发行版中的软件包

如果您不关心软件包的版本,而只是想要“标准Anaconda发行版中所有软件包的最新集合,只要它们可以一起使用”,那么您应该了解一下要点。

为什么更新Anaconda软件包几乎总是一个坏主意

在大多数情况下,更新软件包列表中的Anaconda软件包将产生令人惊讶的结果-您实际上可能降级了许多软件包(实际上,如果将版本指定为自定义,则可能会降级)。上面的要点提供了详细信息。

利用conda环境

您的根环境可能不是尝试管理一组确切的软件包的好地方-它将是一个动态的工作空间,其中安装了新软件包并随机更新了软件包。如果您需要一组确切的软件包,请创建一个conda环境来保存它们。由于使用了conda程序包缓存和使用文件链接的方式,因此这样做通常很快,并且仅占用很少的额外磁盘空间。例如:

conda create -n myspecialenv -c bioconda -c conda-forge python=3.5 pandas beautifulsoup seaborn nltk

conda文档中有更多详细信息和示例。

pip,PyPI和setuptools?

这些都无助于更新通过pip从PyPI安装的软件包,或使用python setup.py install安装的任何软件包。 conda列表将为您提供有关环境中基于pip的Python软件包的一些提示,但对其进行更新不会做任何特别的事情。

Anaconda或Anaconda Enterprise的商业用途

几乎完全相同,但是如果其他人安装了根环境(例如,到/ opt / anaconda / latest),则可能无法更新根环境。如果您无法更新正在使用的环境,则应该可以克隆然后更新:

conda create -n myenv --clone root
conda update -n myenv --all

答案 3 :(得分:0)

conda install conda=4.8.2

有效,因为它安装了特定版本并且 '''/''' 不会长时间出现。