conda / conda

A system-level, binary package and environment manager running on all major operating systems and platforms.

Home Page:https://docs.conda.io/projects/conda/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

package conflict messages not understandable

notestaff opened this issue · comments

Current Behavior

Messages printed when conflicts prevent creating an environment show what does not seem like a conflict:

Package xz conflicts for:
dxpy=0.290.1 -> python -> xz[version='5.0.*|5.2.*|>=5.2.3,<5.3.0a0|>=5.2.4,<5.3.0a0|>=5.2.4,<6.0a0|>=5.2.3,<6.0a0']
git-annex=7.20200219 -> libxml2[version='>=2.9.10,<2.10.0a0'] -> xz[version='>=5.2.4,<5.3.0a0']

Why wouldn't e.g. xz=5.2.4 satisfy these constraints?
Also, the conflict messages printed are non-deterministic, showing different conflicts every time the command to create the environment is re-run.

Steps to Reproduce

(conda-smithy-200224-env) 10:58  [git-annex-feedstock] $ conda create --override-channels -c conda-forge -c bioconda -c defaults -n hmm-env git-annex=7.20200219 dxpy=0.290.1
Collecting package metadata (current_repodata.json): done
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.
failed

UnsatisfiableError: The following specifications were found to be incompatible with each other:

Output in format: Requested package -> Available versions

Package xz conflicts for:
dxpy=0.290.1 -> python -> xz[version='5.0.*|5.2.*|>=5.2.3,<5.3.0a0|>=5.2.4,<5.3.0a0|>=5.2.4,<6.0a0|>=5.2.3,<6.0a0']
git-annex=7.20200219 -> libxml2[version='>=2.9.10,<2.10.0a0'] -> xz[version='>=5.2.4,<5.3.0a0']

Expected Behavior

Print a message that will enable me to fix the conflict.

Environment Information

`conda info`

     active environment : conda-smithy-200224-env
    active env location : /ilya/miniconda3/envs/conda-smithy-200224-env
            shell level : 11
       user config file : /home/ilya/.condarc
 populated config files : /home/ilya/.condarc
          conda version : 4.8.2
    conda-build version : 3.18.9
         python version : 3.7.3.final.0
       virtual packages : __glibc=2.26
       base environment : /ilya/miniconda3  (writable)
           channel URLs : https://conda.anaconda.org/broad-viral/linux-64
                          https://conda.anaconda.org/broad-viral/noarch
                          https://conda.anaconda.org/conda-forge/linux-64
                          https://conda.anaconda.org/conda-forge/noarch
                          https://conda.anaconda.org/bioconda/linux-64
                          https://conda.anaconda.org/bioconda/noarch
                          https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://conda.anaconda.org/notestaff/linux-64
                          https://conda.anaconda.org/notestaff/noarch
                          https://conda.anaconda.org/r/linux-64
                          https://conda.anaconda.org/r/noarch
          package cache : /ilya/miniconda3/pkgs
                          /home/ilya/.conda/pkgs
       envs directories : /ilya/miniconda3/envs
                          /home/ilya/.conda/envs
               platform : linux-64
             user-agent : conda/4.8.2 requests/2.23.0 CPython/3.7.3 Linux/4.14.165-133.209.amzn2.x86_64 amzn/2 glibc/2.26
                UID:GID : 1002:1002
             netrc file : None
           offline mode : False

`conda config --show-sources`

(conda-smithy-200224-env) 11:00  [git-annex-feedstock] $ conda config --show-sources
==> /home/ilya/.condarc <==
channels:
  - broad-viral
  - conda-forge
  - bioconda
  - defaults
  - notestaff
  - r
report_errors: False

`conda list --show-channel-urls`

(conda-smithy-200224-env) 11:00  [git-annex-feedstock] $ conda list --show-channel-urls
# packages in environment at /ilya/miniconda3/envs/conda-smithy-200224-env:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       0_gnu    conda-forge
beautifulsoup4            4.8.2                    py38_0    conda-forge
blinker                   1.4                        py_1    conda-forge
bzip2                     1.0.8                h516909a_2    conda-forge
ca-certificates           2019.11.28           hecc5488_0    conda-forge
certifi                   2019.11.28               py38_0    conda-forge
cffi                      1.13.2           py38h8022711_0    conda-forge
chardet                   3.0.4                 py38_1003    conda-forge
conda                     4.8.2                    py38_0    conda-forge
conda-build               3.18.11                  py38_0    conda-forge
conda-forge-pinning       2020.02.20                    0    conda-forge
conda-package-handling    1.6.0            py38h516909a_1    conda-forge
conda-smithy              3.6.8                      py_0    conda-forge
cryptography              2.8              py38h72c5cf5_1    conda-forge
curl                      7.68.0               hf8cf82a_0    conda-forge
deprecated                1.2.7                      py_0    conda-forge
expat                     2.2.9                he1b5a44_2    conda-forge
filelock                  3.0.10                     py_0    conda-forge
gettext                   0.19.8.1          hc5be6a0_1002    conda-forge
git                       2.25.0          pl526hce37bd2_0    conda-forge
gitdb                     4.0.2                      py_0    conda-forge
gitpython                 3.1.0                      py_0    conda-forge
glob2                     0.7                        py_0    conda-forge
icu                       64.2                 he1b5a44_1    conda-forge
idna                      2.9                        py_1    conda-forge
isodate                   0.6.0                      py_1    conda-forge
jinja2                    2.11.1                     py_0    conda-forge
krb5                      1.16.4               h2fd8d38_0    conda-forge
ld_impl_linux-64          2.33.1               h53a641e_8    conda-forge
libarchive                3.3.3             hc47fbbf_1007    conda-forge
libcurl                   7.68.0               hda55be3_0    conda-forge
libedit                   3.1.20170329      hf8c457e_1001    conda-forge
libffi                    3.2.1             he1b5a44_1006    conda-forge
libgcc-ng                 9.2.0                h24d8f2e_2    conda-forge
libgomp                   9.2.0                h24d8f2e_2    conda-forge
libiconv                  1.15              h516909a_1005    conda-forge
liblief                   0.9.0                hf8a498c_1    conda-forge
libssh2                   1.8.2                h22169c7_2    conda-forge
libstdcxx-ng              9.2.0                hdf63c60_2    conda-forge
libxml2                   2.9.10               hee79883_0    conda-forge
lz4-c                     1.8.3             he1b5a44_1001    conda-forge
lzo                       2.10              h14c3975_1000    conda-forge
markupsafe                1.1.1            py38h516909a_0    conda-forge
msrest                    0.6.10                     py_0    conda-forge
ncurses                   6.1               hf484d3e_1002    conda-forge
oauthlib                  3.0.1                      py_0    conda-forge
openssl                   1.1.1d               h516909a_0    conda-forge
patchelf                  0.10                 he1b5a44_0    conda-forge
pcre                      8.44                 he1b5a44_0    conda-forge
perl                      5.26.2            h516909a_1006    conda-forge
pip                       20.0.2                     py_2    conda-forge
pkginfo                   1.5.0.1                    py_0    conda-forge
psutil                    5.7.0            py38h516909a_0    conda-forge
py-lief                   0.9.0            py38he1b5a44_1    conda-forge
pycosat                   0.6.3           py38h516909a_1002    conda-forge
pycparser                 2.19                       py_2    conda-forge
pycrypto                  2.6.1           py38h516909a_1003    conda-forge
pygithub                  1.43.6                   py38_0    conda-forge
pyjwt                     1.7.1                      py_0    conda-forge
pyopenssl                 19.1.0                     py_1    conda-forge
pysocks                   1.7.1                    py38_0    conda-forge
python                    3.8.1                h357f687_2    conda-forge
python-libarchive-c       2.9                      py38_0    conda-forge
pytz                      2019.3                     py_0    conda-forge
pyyaml                    5.3              py38h516909a_0    conda-forge
readline                  8.0                  hf8c457e_0    conda-forge
requests                  2.23.0                   py38_0    conda-forge
requests-oauthlib         1.2.0                      py_0    conda-forge
ripgrep                   11.0.2               h516909a_3    conda-forge
ruamel.yaml               0.16.6           py38h516909a_0    conda-forge
ruamel.yaml.clib          0.2.0            py38h516909a_0    conda-forge
ruamel_yaml               0.15.80         py38h516909a_1000    conda-forge
setuptools                45.2.0                   py38_0    conda-forge
six                       1.14.0                   py38_0    conda-forge
smmap                     3.0.1                      py_0    conda-forge
soupsieve                 1.9.4                    py38_0    conda-forge
sqlite                    3.30.1               hcee41ef_0    conda-forge
tk                        8.6.10               hed695b0_0    conda-forge
toolz                     0.10.0                     py_0    conda-forge
tqdm                      4.43.0                     py_0    conda-forge
urllib3                   1.25.7                   py38_0    conda-forge
vsts-python-api           0.1.22                     py_0    conda-forge
wheel                     0.34.2                     py_1    conda-forge
wrapt                     1.12.0           py38h516909a_0    conda-forge
xz                        5.2.4             h14c3975_1001    conda-forge
yaml                      0.2.2                h516909a_1    conda-forge
zlib                      1.2.11            h516909a_1006    conda-forge
zstd                      1.4.4                h3b9ef0a_1    conda-forge

I was just on my way here to file a similar issue, but found this one first. I too have been fighting with solver issues, and the messages leave me unable to tell if the solver is misbehaving or if I'm making an error somewhere.

Here are a couple of very typical examples:

Package wheel conflicts for:
python=3.6 -> pip -> wheel
pip=19.3.1 -> wheel

Package boto3 conflicts for:
moto==1.3.14 -> boto3[version='>=1.9.201']
boto3=1.11.6

What is that trying to tell me? Is there a reference somewhere that could help in interpreting these messages?

same here on Ubuntu 18.04, conda 4.8.4:

$ conda create -n geocube -v -c conda-forge python=3.7 geocube
Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.
failed                                                                                                                                                                                                      
Traceback (most recent call last):
  File "/home/test/anaconda3/lib/python3.7/site-packages/conda/exceptions.py", line 1079, in __call__
return func(*args, **kwargs)
File "/home/test/anaconda3/lib/python3.7/site-packages/conda/cli/main.py", line 84, in _main
exit_code = do_call(args, p)
File "/home/test/anaconda3/lib/python3.7/site-packages/conda/cli/conda_argparse.py", line 83, in do_call
return getattr(module, func_name)(args, parser)
File "/home/test/anaconda3/lib/python3.7/site-packages/conda/cli/main_create.py", line 41, in execute
install(args, parser, 'create')
File "/home/test/anaconda3/lib/python3.7/site-packages/conda/cli/install.py", line 292, in install
raise e
File "/home/test/anaconda3/lib/python3.7/site-packages/conda/cli/install.py", line 265, in install
should_retry_solve=(_should_retry_unfrozen or repodata_fn != repodata_fns[-1]),
File "/home/test/anaconda3/lib/python3.7/site-packages/conda/core/solve.py", line 117, in solve_for_transaction
should_retry_solve)
File "/home/test/anaconda3/lib/python3.7/site-packages/conda/core/solve.py", line 158, in solve_for_diff
force_remove, should_retry_solve)
File "/home/test/anaconda3/lib/python3.7/site-packages/conda/core/solve.py", line 281, in solve_final_state
ssc = self._run_sat(ssc)
File "/home/test/anaconda3/lib/python3.7/site-packages/conda/common/io.py", line 88, in decorated
return f(*args, **kwds)
File "/home/test/anaconda3/lib/python3.7/site-packages/conda/core/solve.py", line 818, in _run_sat
should_retry_solve=ssc.should_retry_solve
File "/home/test/anaconda3/lib/python3.7/site-packages/conda/common/io.py", line 88, in decorated
return f(*args, **kwds)
File "/home/test/anaconda3/lib/python3.7/site-packages/conda/resolve.py", line 1321, in solve
self.find_conflicts(specs, specs_to_add, history_specs)
File "/home/test/anaconda3/lib/python3.7/site-packages/conda/resolve.py", line 352, in find_conflicts
raise UnsatisfiableError(bad_deps, strict=strict_channel_priority)
conda.exceptions.UnsatisfiableError: The following specifications were found to be incompatible with each other:
  
  Output in format: Requested package -> Available versions

Package python conflicts for:
geocube -> python=3
python=3.7
geocube -> appdirs -> python[version='2.7.*|3.5.*|3.6.*|3.4.*|>=3.6|>=3.5|>=3.6,<3.7.0a0|>=2.7,<2.8.0a0|>=3.5,<3.6.0a0|>=3.8,<3.9.0a0|>=3.7,<3.8.0a0|>=3.5.3']

Nothing seems incompatible though...

Has there been any progress on this? I run into this issue often and it's cost me lots of time recently.
Today I ran into this beauty:

Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: / 
Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.
failed
UnsatisfiableError: The following specifications were found to be incompatible with each other:
Output in format: Requested package -> Available versions

Ah, so it found conflicts but no specifications were found to be incompatible with each other? Not even any false positives like usual. Fantastic.

+1 on this, because it's terribly frustrating when all listed conflicts don't look like conflicts at all:

Package scipy conflicts for:
scikit-image -> scipy[version='>=0.17|>=0.19|>=0.9']
scikit-learn -> scipy

or

Package dataclasses conflicts for:
pytorch -> dataclasses
pytorch-lightning -> pytorch[version='>=1.3'] -> dataclasses

How can there be no dev available to explain this confusing behaviour? Is there no documentation on this?

Package unittest2 conflicts for:
h5py=2.10.0 -> unittest2
keras-applications -> h5py -> unittest2
keras -> h5py -> unittest2

How can this throw a conflict?

I just spent all day on this kind of rubbish, and have got absolutely no-where.

Clearly a lot of effort has gone into conda, but unfortunately it seems kind of useless for anything non-trivial.....

Yes. So redundant given all the other comments. Why has nothing been done?

commented

Same issue.
$ condo update --all #runs with no errors.
$ conda install jupyterlab # has thousands of conflicts

My life is very miserable now.
  Package pip conflicts for:
  sphinx -> python[version='>=3.6'] -> pip
  scipy -> python[version='>=3.9,<3.10.0a0'] -> pip
  pytest=5.4.3 -> python[version='>=3.8,<3.9.0a0'] -> pip
  temfpy[version='>=1.1'] -> python -> pip
  numpydoc -> python[version='>=3.5'] -> pip
  pytest-flake8 -> python -> pip
  jupyterlab -> python[version='>=3.6'] -> pip
  pytest-sugar -> python -> pip
  nbsphinx -> python[version='>=3.6'] -> pip
  matplotlib-base -> python[version='>=3.7,<3.8.0a0'] -> pip
  pip
  statsmodels -> python[version='>=3.6,<3.7.0a0'] -> pip
  numpy=1.18 -> python[version='>=3.6,<3.7.0a0'] -> pip
  pytest-black -> python[version='>=3.6'] -> pip
  seaborn -> python[version='>=3.6'] -> pip
  black[version='>=20.8b0'] -> python[version='>=3.6'] -> pip
  sphinx_rtd_theme -> python -> pip
  chaospy -> python[version='>=3.5'] -> pip
  pre-commit -> python[version='>=3.9,<3.10.0a0'] -> pip
  pandas -> python[version='>=3.7,<3.8.0a0'] -> pip
  pytest-cov -> python -> pip
  pdbpp -> python -> pip
  python=3.8 -> pip
  hypothesis -> python[version='>=3.6'] -> pip
  rpy2==2.9.4 -> python[version='>=3.7,<3.8.0a0'] -> pip
  ipykernel -> python[version='>=3.9,<3.10.0a0'] -> pip
  sphinxcontrib-bibtex -> python[version='>=3.6'] -> pip
  numba -> python[version='>=3.9,<3.10.0a0'] -> pip

Update: for anyone who is looking for a conda alternative, mamba works flawlessly.

Hey all, just to give some context why this hasn't been obvious, the previous conda maintainers left Anaconda in 2020 and a new group of people have started earlier this year (including me). We're currently in the process to port the mamba/libsolv solver to conda which should improve the user experience drastically in many areas, just like reporting of conflicts. More on that soon!

Just my luck. I'm trying to find an issue where a new package is causing thousands of lines of conflicts and man, I don't know where to start. I hope 5.0.0 comes out soon to resolve this.

@EricAtORS have you tried mamba?

Very interesting project.
I did not. I'll look in to it. Right now, I'm using conda-devenv and I'd be curious to see how we could migrate to mamba if it works better.

I cant even install mamba due to frustrating conflicts. Why don't they finally add an "override" function for such errors and save so many users from such a waste of time.

I created a fresh environment with conda create --name plots -c conda-forge python=3.9, then tried to run conda install -c conda-forge mayavi.

It tried to resolve conflicts for well over an hour, then eventually printed a list of conflicts so long I couldn't even scroll to the top of it in my terminal.

Problem is most of the conflicts don't even make sense. I've got hundreds of examples of this issue now. Based on #9136 it seems these are probably just missing the requirement actually causing the conflict.

Here is the output (as I explained the top is cut off):
https://gist.github.com/nog642/e8257da3ce142b7e77df968d042d1b7c

Edit: Seems my specific issue was probably that the second command was run in the base envrionment, not the new one. The point about the confusing conflict messages remains though.

For me the solution was to use conda create and conda install wtih --override-channels -c defaults, as per suggestion in #10123

Hi there, thank you for your contribution!

This issue has been automatically marked as stale because it has not had recent activity. It will be closed automatically if no further activity occurs.

If you would like this issue to remain open please:

  1. Verify that you can still reproduce the issue at hand
  2. Comment that the issue is still reproducible and include:
    - What OS and version you reproduced the issue on
    - What steps you followed to reproduce the issue

NOTE: If this issue was closed prematurely, please leave a comment.

Thanks!