Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

I get this message all the time when I try to update packages and I usually just proceed and everything generally works out. But I'm concerned that I've accidentally created a much more complex Anaconda environment than I meant to. This thread (What does "the following packages will be superseded by a higher priority channel" mean?) mentions giving other channels higher priority. If that's what I've done, how can I undo it?

Here's an example of the message:

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)?

However, if I don't specify the version number, it appears to want to downgrade my flask version:

 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)?

But my main question isn't about flask versions, it's asking what I did to end up with multiple channels, and how do I simply it down to one. I've seen several comments that suggest modifying the .condarc file, but I don't have one (which is the default) so I don't think that's creating the problem.

In case this helps, my output from conda info is:

Current conda install:

           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
like image 992
jss367 Avatar asked Feb 03 '17 02:02

jss367


1 Answers

The command you're writing is

conda install -c anaconda flask

conda install tells Conda to install a package (obviously), and flask is the name of the package. Although you may not have any channels listed in your .condarc file, you are telling conda to use a specific channel and give it the highest priority with the -c anaconda part of that command. So conda install goes out to the web and finds the best package matches that it can, taking into account that you're telling it that it should prefer packages from the anaconda channel. However, the anaconda channel doesn't have flask=0.12 on it, the highest version they have (for your platform) is flask=0.11.1. You can see here for a list of all the versions that they have available on that channel: https://anaconda.org/anaconda/flask/files

So here's what's happening

conda install -c anaconda flask=0.12

goes to look for all the packages it can find from the anaconda channel. It can't find flask=0.12 for your platform, so since you have it installed, it does nothing. However, it does find versions of conda and conda-env on that channel, so it decides to download them from the anaconda channel, because you gave it the highest priority, even though the version is lower.

conda install -c anaconda flask

also goes to look for all the packages it can find from the anaconda channel. Since you didn't specify a version for flask, conda looks for the most recent version it can find on the channel that you specified. Since you already have flask installed from a different channel (in this case, the defaults channel), installing the version from the anaconda channel will supercede the version you have.

like image 85
darthbith Avatar answered Oct 11 '22 15:10

darthbith