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?
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?
@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:
- Verify that you can still reproduce the issue at hand
- 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!