以下软件包将被更高优先级的频道取代

The following packages will be SUPERCEDED by a higher-priority channel

当我尝试更新软件包时,我总是收到此消息,我通常只是继续操作,通常一切正常。但我担心我不小心创建了一个比我想要的复杂得多的 Anaconda 环境。此线程 (What does "the following packages will be superseded by a higher priority channel" mean?) 提到给予其他频道更高的优先级。如果那是我所做的,我该如何撤消它?

消息示例如下:

conda install -c anaconda flask=0.12
Fetching package metadata .............
Solving package specifications: .

Package plan for installation in environment C:\Users\HMGSYS\Anaconda3:

The following packages will be SUPERCEDED by a higher-priority channel:

    conda:     4.3.8-py35_0  --> 4.2.13-py35_0 anaconda
    conda-env: 2.6.0-0       --> 2.6.0-0       anaconda

Proceed ([y]/n)?

但是,如果我不指定版本号,它似乎要降级我的 flask 版本:

 conda install -c anaconda flask
Fetching package metadata .............
Solving package specifications: .

Package plan for installation in environment C:\Users\HMGSYS\Anaconda3:

The following packages will be UPDATED:

    anaconda:  4.3.0-np111py35_0 --> custom-py35_0 anaconda

The following packages will be SUPERCEDED by a higher-priority channel:

    conda:     4.3.8-py35_0      --> 4.2.13-py35_0 anaconda
    conda-env: 2.6.0-0           --> 2.6.0-0       anaconda
    flask:     0.12-py35_0       --> 0.11.1-py35_0 anaconda

Proceed ([y]/n)?

但我的主要问题不是关于 flask 版本,而是询问我做了什么来结束多个通道,以及如何将它简化为一个。我看过几条建议修改 .condarc 文件的评论,但我没有(这是默认设置),所以我认为这不会造成问题。

如果这有帮助,我的 conda info 输出是:

当前的 conda 安装:

           platform : win-64
      conda version : 4.3.8
   conda is private : False
  conda-env version : 4.3.8
conda-build version : 2.1.3
     python version : 3.5.2.final.0
   requests version : 2.12.4
   root environment : C:\Users\HMGSYS\Anaconda3  (writable)
default environment : C:\Users\HMGSYS\Anaconda3
   envs directories : C:\Users\HMGSYS\Anaconda3\envs
      package cache : C:\Users\HMGSYS\Anaconda3\pkgs
       channel URLs : https://repo.continuum.io/pkgs/free/win-64
                      https://repo.continuum.io/pkgs/free/noarch
                      https://repo.continuum.io/pkgs/r/win-64
                      https://repo.continuum.io/pkgs/r/noarch
                      https://repo.continuum.io/pkgs/pro/win-64
                      https://repo.continuum.io/pkgs/pro/noarch
                      https://repo.continuum.io/pkgs/msys2/win-64
                      https://repo.continuum.io/pkgs/msys2/noarch
        config file : None
       offline mode : False
         user-agent : conda/4.3.8 requests/2.12.4 CPython/3.5.2 Windows/10 Windows/10.0.14393

您正在编写的命令是

conda install -c anaconda flask

conda install 告诉 Conda 安装一个包(很明显),flask 是包的名称。尽管您的 .condarc 文件中可能没有列出任何频道,但您是在告诉 conda 使用特定频道 并在 -c anaconda 部分给予它最高优先级 该命令的。因此 conda install 会上网并尽可能找到最匹配的软件包,同时考虑到您告诉它它应该更喜欢来自 anaconda 频道的软件包。但是,anaconda 频道上没有 flask=0.12,他们拥有的最高版本(针对您的平台)是 flask=0.11.1。您可以在此处查看他们在该频道上可用的所有版本的列表:https://anaconda.org/anaconda/flask/files

事情是这样的

conda install -c anaconda flask=0.12

去寻找它可以从 anaconda 频道找到的所有包。它无法为您的平台找到 flask=0.12,所以既然您已经安装了它,它什么都不做。但是,它确实在那个频道上找到了 condaconda-env 的版本,所以它决定从 anaconda 频道下载它们,因为你给了它最高优先级,即使版本是更低。

conda install -c anaconda flask

也去寻找它能从anaconda频道找到的所有包。由于您没有为 flask 指定版本,conda 查找它可以在您指定的频道上找到的最新版本。由于您已经从其他渠道(在本例中为 defaults 渠道)安装了 flask,因此从 anaconda 渠道安装的版本将取代您拥有的版本。