What does "the following packages will be superseded by a higher priority channel" mean?

Chuck picture Chuck · Jan 4, 2017 · Viewed 11.7k times · Source

I am trying to install fuzzywuzzy onto my Anaconda distribution in 64 bit Linux. When I do this, it tries to change my conda, and conda-env to conda-forge channels. As follows:

I search anaconda for fuzzy wuzzy by writing:

anaconda search -t fuzzywuzzy

This showed that the most up to date version available for anaconda on 64 bit Linux is 0.13 provided on the channel conda-forge.

To install, within the command line, I type:

conda install -c conda-forge fuzzywuzzy=0.13.0

I get the following output:

The following packages will be downloaded:

package                    |            build
---------------------------|-----------------
conda-env-2.6.0            |                0         1017 B  conda-forge
python-levenshtein-0.12.0  |           py27_0         138 KB  conda-forge
conda-4.2.13               |           py27_0         375 KB  conda-forge
fuzzywuzzy-0.11.0          |           py27_0          15 KB  conda-forge
------------------------------------------------------------
                                   Total:         528 KB


The following new packages will be INSTALLED:

    fuzzywuzzy:            0.11.0-py27_0 conda-forge
    python-levenshtein:    0.12.0-py27_0 conda-forge

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

    conda:        4.2.13-py27_0      --> 4.2.13-py27_0 conda-forge 
    conda-env:    2.6.0-0            --> 2.6.0-0       conda-forge 

Proceed ([y]/n)?

I do not understand what this is telling me.

What does this mean? Am I right in thinking that this is changing my default package manager channels? Can this be reversed if I go ahead and install it? Is there any way to complete the installation without changing the default channel? Or is favouring the superceding channels something that I should be doing?

I don't want to change my distribution just for one module, or cause further headaches.

This question: https://github.com/conda/conda/issues/2898 sounds like its telling me that I should just let it happen. What do?

(I am using anaconda version: 4.2.13 and Python 2.7.12)

Answer

Jonas Adler picture Jonas Adler · Jul 18, 2017

When you ask conda to install fuzzywuzzy from conda-forge, fuzzywuzzy indicates that it needs conda and conda-env. Conda detects that you already have these installed, but it also knows that these were installed from the default channel and not conda-forge.

Now, as a user you might expect that 4.2.13-py27_0 in the default channel and in the conda-forge channel to be exactly the same (and they should) but conda can not guarantee that this is the case. The developers could very well have uploaded different packages to the default and conda-forge channels.

This would cause some really shady bugs, and in order to avoid those conda prefers to install the dependencies from the same channel as the new package. This is what the message indicates, a package getting replaced with the same package, but from a different channel which you gave higher priority by using -c conda-forge.