只是想知道什么是更新Anaconda和Conda安装和虚拟环境的正确方法。以下是我一步一步的困惑:
conda update anaconda时,它会更新/降级很多包。conda update conda,它再次更新/降级了一些包。conda update --update-all --它开始降级/升级不同的包。conda update anaconda。我期待着一条像这样的消息,一切都是最新的,但令我惊讶的是,它再次显示了大量需要更新/降级的包列表。
我在这里做错什么了?在我看来,我似乎是在绕着这些命令转。有什么帮助吗?发布于 2019-11-21 03:26:07
在Anaconda的这个有用的帖子中找到答案
保持Anaconda的最新进展
下面是一个经常被问到的问题,所以我决定发表一个答案,解释Anaconda可以保持最新的各种方式,这将是有帮助的。这个问题最初是在StackOverflow上提出的。
我的电脑上安装了Anaconda,我想更新一下。在Navigator中,我可以看到有几个单独的包可以更新,但也有一个anaconda包,它有时有版本号,有时表示自定义。我该怎么做?
答案
在大多数情况下,95%的人真正想要的是执行以下命令:
conda update --all这将将当前环境中的所有包更新为最新版本--小字体是,它可能使用一些包的旧版本以满足依赖约束(通常这是不必要的,并且在必要时,包计划求解程序将尽力将影响降到最低程度)。
这需要从命令行执行,最好的方法是从Anaconda Navigator,然后是“environment”选项卡,然后单击根环境旁边的三角形,选择“Open Terminal”:
此操作只更新所选环境(在本例中为根环境)。如果您有其他要更新的环境,您可以重复上面的过程,但是首先单击环境。当它被选中时,右边有一个三角形的标记(见上面的图像,步骤3)。或者,在命令行中,可以提供环境名称(-n envname)或路径(-p / path /to/env)。例如,要从上面的屏幕快照中更新dspyr环境:
conda update -n dspyr --all更新单个包
如果您只对更新单个包感兴趣,那么只需单击Navigator中的蓝色箭头或蓝色版本号,例如上面屏幕截图中的星型或非星型,这将标记这些包以进行升级。完成后,您需要单击“应用”按钮:
或从命令行:
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 nltkconda文档有更多的细节和示例。
pip、PyPI和setuptools?
所有这些都无助于通过pip更新从PyPI安装的包,或者使用python setup.py安装安装的任何包。conda列表将为您提供一些提示,说明您在环境中拥有的基于pip的Python包,但是它不会做任何特殊的事情来更新它们。
Anaconda或Anaconda企业的商业用途
情况与此大致相同,但如果根环境是由其他人安装的(例如/opt/anaconda/opt),则可能无法更新它。如果无法更新正在使用的环境,则应该能够克隆并更新:
conda create -n myenv --clone root
conda update -n myenv --all发布于 2019-08-30 02:50:43
您本身并没有做错任何事情,但是在同一个env上运行conda update anaconda和conda update --all并没有多大意义--它们代表着两种完全不同的配置。
更新Anaconda
Anaconda是一个Python发行版,它将大量的包捆绑在一起。想必,大量的测试都会验证所有的包版本和构建是否相互兼容。因为这需要时间,Anaconda团队每隔几个月就发布一次新的发行版(即新的anaconda版本)。如果您想要一组经过互操作性测试的稳定的包,那么执行conda update anaconda。
更新所有
在Anaconda发行版之间,许多包的新版本仍然在Anaconda通道上发布,如果您运行conda update --all,您将不可避免地领先于anaconda包中指定的版本。如果您想要最新的单独的包版本,并且不介意使用尚未对集成进行彻底测试的包构建,那么运行conda update --all。
值得注意的是,优先访问最新版本包的人似乎更喜欢Conda Forge,因为它往往有更频繁的包发布。然而,在我看来,安装Anaconda几乎是没有意义的,如果您要将大多数包切换到Conda Forge。相反,只需安装米尼康达,并只在开始时从Conda安装所需的内容。
无更新
就我个人而言,一旦我强化了项目的需求,我很少会在env上运行conda update。每次更新env时,都会冒破坏已经编写的代码的风险。反而使创建新env变得非常容易,如果它们与其他env有很多重叠,那么env可能会因为通过硬链接跨env共享包而变得很轻。
更新Conda
上面所有内容的一个例外是conda包,它是用于管理包和env的基础设施。这样,就应该像任何其他包管理器(例如,pip或homebrew)一样进行更新。
https://stackoverflow.com/questions/57701571
复制相似问题