Closed gerritholl closed 4 years ago
Sometimes conda doesn't throw an exception, but instead outputs:
Collecting package metadata (current_repodata.json): ...working... done
Solving environment: ...working... failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working...
Building graph of deps: 0%| | 0/4 [00:00<?, ?it/s]
Examining @/linux-64::__cuda==10.0=0: 0%| | 0/4 [00:00<?, ?it/s]
Examining typhon: 25%|██▌ | 1/4 [00:00<00:00, 4315.13it/s]
Examining python=3.8: 50%|█████ | 2/4 [00:02<00:02, 1.36s/it]
Examining python=3.8: 75%|███████▌ | 3/4 [00:02<00:00, 1.10it/s]
Examining @/linux-64::__glibc==2.26=0: 75%|███████▌ | 3/4 [00:02<00:00, 1.10it/s]
Determining conflicts: 0%| | 0/4 [00:00<?, ?it/s]
Examining conflict for __cuda: 0%| | 0/4 [00:00<?, ?it/s]
Examining conflict for typhon python: 25%|██▌ | 1/4 [00:00<00:00, 10699.76it/s]
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 python conflicts for:
typhon -> python[version='3.5.*|3.6.*|>=3.5,<3.6.0a0|>=3.6,<3.7.0a0|>=3.7,<3.8.0a0']
typhon -> docutils -> python[version='2.7.*|>=2.7,<2.8.0a0|>=3.8,<3.9.0a0|3.4.*|>=3.6|>=3.5.3|>=3.5|>=3.8.0a,<3.9.0a0']
python=3.8The following specifications were found to be incompatible with your CUDA driver:
- feature:/linux-64::__cuda==10.0=0
Your installed CUDA driver is: 10.0
Note that strict channel priority may have removed packages required for satisfiability.
Also reported at https://github.com/conda/conda/issues/9681
If I install it into an existing environment I get:
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
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 the existing python installation in your environment:
Specifications:
- typhon -> python[version='3.5.*|3.6.*|>=3.5,<3.6.0a0|>=3.6,<3.7.0a0|>=3.7,<3.8.0a0']
Your python: python=3.8
If python is on the left-most side of the chain, that's the version you've asked for.
When python appears to the right, that indicates that the thing on the left is somehow
not available for the python version you are constrained to. Note that conda will not
change your python version to a different minor version unless you explicitly specify
that.
The following specifications were found to be incompatible with your CUDA driver:
- feature:/linux-64::__cuda==10.0=0
Your installed CUDA driver is: 10.0
Note that strict channel priority may have removed packages required for satisfiability.
We don't provide any Python 3.8 Anaconda packages, since there is no stable Anaconda Distribution with Python 3.8 available yet. When you're trying to install the current py37 package in a Python 3.8 environment, it most likely triggers a downgrade to Python 3.7 and everything goes haywire in Anaconda's dependency resolution. This is an upstream issue.
Why do you need a stable anaconda distribution to provide packages when there is a python-3.8 package on conda-forge, which most people use? Typhon appears quite alone in this decision, there are python 3.8 packages for scipy, numpy, pandas, numba, xarray, numexpr, satpy, matplotlib, scikit-learn, imageio, bokeh, and many others. I'm not aware of other packages that wait for the full Anaconda Distribution before providing builds for 3.8. What is the rationale here?
We agreed upon that typhon only depends on anaconda main and not on conda-forge. Currently it is not possible to build a python 3.8 package without using conda-forge because netcdf4-py38 is still missing in main:
conda create -n test python=3.8 python
[snip]
conda install netcdf4
[snip]
UnsatisfiableError: The following specifications were found
[snip]
- netcdf4 -> python[version='>=2.7,<2.8.0a0|>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|>=3.5,<3.6.0a0']
Your python: python=3.8
As soon as this dependency is satisfied by anaconda/main, I'll happily add a 3.8 package to our builds.
There's still a difference between not requiring conda-forge and not supporting conda-forge — adding a 3.8 package would not affect people trying to install typhon for python 3.7 without using conda-forge. But it's not important, I can easily install typhon in my python 3.8 environment with pip.
Bug report
Bug summary
Using conda, I cannot install typhon for Python 3.8. In fact, conda throws an exception. Probably a bug in conda, but possibly triggered by something in typhon as it's not happening with Python 3.7 and I've not seen this bug with any other package installed via conda. The failure appears similar to https://github.com/conda/conda/issues/8811 except that it's supposed to be fixed in conda 4.8.2.
Code for reproduction
Actual outcome
Expected outcome
I expected a working conda environment with the latest released typhon and Python 3.8.1.
Version information