openPMD/openPMD-viewer

Issues installing via conda

Closed this issue · 8 comments

I freshly installed openPMD-viewer via conda in a clean environment on an M1 Mac

conda install -c conda-forge openpmd-viewer

and get the following error:

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

Thanks for reporting this issue.

I tried reproducing this in a clean, new environment, on an M2 Mac, but did not get any error:

conda create -n test 
conda activate test  
conda install -c conda-forge openpmd-viewer

Do you still get the same error if you use the above commands (i.e. creating a clean environment) ?

I think, if I remember correctly what we found out later yesterday, the default conda installed python 3.12 which was too new for openPMD-viewer or openPMD-api.

I can also confirm that with conda version 22.11.1, the above code from @RemiLehe installs python 3.11.6 and that works with openPMD-viewer.
After updating to conda version 23.9.0 it also/still works. (also M1)

@max-lehman14 installed it via the anaconda installer but installed the rest on the terminal (as described above).
I am not sure, how he ended up with python 3.12.
@max-lehman14 could you provide a few more details.

When using

conda create -n test python

instead of

conda create -n test

I could recreate @max-lehman14 error. The error message reads:

Collecting package metadata (current_repodata.json): done
Solving environment: unsuccessful initial attempt using frozen solve. Retrying with flexible solve.
Solving environment: unsuccessful attempt using repodata from current_repodata.json, retrying with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: unsuccessful initial attempt using 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

The issue is definitely the python 3.12.0 version, that is installed when adding python (without a version) when creating the env.

OK, thanks. I can reproduce the issue. With mamba, I got some more details:


LibMambaUnsatisfiableError: Encountered problems while solving:
  - nothing provides _python_rc needed by python-3.12.0rc3-rc3_h47c9636_1_cpython

Could not solve for environment specs
The following packages are incompatible
├─ openpmd-viewer   is installable and it requires
│  ├─ matplotlib-base   with the potential options
│  │  ├─ matplotlib-base [3.3.2|3.3.3|...|3.7.3] would require
│  │  │  └─ python_abi 3.8.* *_cp38, which can be installed;
│  │  ├─ matplotlib-base [3.3.2|3.3.3|...|3.8.0] would require
│  │  │  └─ python_abi 3.9.* *_cp39, which can be installed;
│  │  ├─ matplotlib-base [3.4.3|3.5.0|...|3.8.0] would require
│  │  │  └─ python_abi 3.10.* *_cp310, which can be installed;
│  │  ├─ matplotlib-base [3.6.1|3.6.2|...|3.8.0] would require
│  │  │  └─ python_abi 3.11.* *_cp311, which can be installed;
│  │  ├─ matplotlib-base [3.4.2|3.5.0|...|3.7.2] would require
│  │  │  └─ python >=3.8,<3.9.0a0 , which can be installed;
│  │  ├─ matplotlib-base [3.4.2|3.5.0|...|3.7.2] would require
│  │  │  └─ python >=3.9,<3.10.0a0 , which can be installed;
│  │  ├─ matplotlib-base [3.5.0|3.5.1|...|3.7.2] would require
│  │  │  └─ python >=3.10,<3.11.0a0 , which can be installed;
│  │  └─ matplotlib-base [3.6.2|3.7.1|3.7.2] would require
│  │     └─ python >=3.11,<3.12.0a0 , which can be installed;
│  ├─ numba   with the potential options
│  │  ├─ numba [0.52.0|0.53.0|...|0.57.1] would require
│  │  │  └─ python_abi 3.8.* *_cp38, which can be installed;
│  │  ├─ numba [0.53.0|0.53.1|...|0.57.1] would require
│  │  │  └─ python_abi 3.9.* *_cp39, which can be installed;
│  │  ├─ numba [0.55.0|0.55.1|...|0.57.1] would require
│  │  │  └─ python_abi 3.10.* *_cp310, which can be installed;
│  │  ├─ numba [0.57.0|0.57.1] would require
│  │  │  └─ python_abi 3.11.* *_cp311, which can be installed;
│  │  ├─ numba [0.54.0|0.55.1|...|0.57.1] would require
│  │  │  └─ python >=3.8,<3.9.0a0 , which can be installed;
│  │  ├─ numba [0.54.0|0.55.1|...|0.57.1] would require
│  │  │  └─ python >=3.9,<3.10.0a0 , which can be installed;
│  │  ├─ numba [0.55.1|0.56.3|0.56.4|0.57.0|0.57.1] would require
│  │  │  └─ python >=3.10,<3.11.0a0 , which can be installed;
│  │  └─ numba [0.57.0|0.57.1] would require
│  │     └─ python >=3.11,<3.12.0a0 , which can be installed;
│  ├─ openpmd-api   with the potential options
│  │  ├─ openpmd-api [0.13.2|0.13.3|...|0.15.2] would require
│  │  │  └─ python_abi 3.8.* *_cp38, which can be installed;
│  │  ├─ openpmd-api [0.13.2|0.13.3|...|0.15.2] would require
│  │  │  └─ python_abi 3.9.* *_cp39, which can be installed;
│  │  ├─ openpmd-api [0.14.4|0.14.5|0.15.1|0.15.2] would require
│  │  │  └─ python_abi 3.10.* *_cp310, which can be installed;
│  │  └─ openpmd-api [0.14.5|0.15.1|0.15.2] would require
│  │     └─ python_abi 3.11.* *_cp311, which can be installed;
│  └─ scipy   with the potential options
│     ├─ scipy [1.10.0|1.10.1|...|1.9.3] would require
│     │  └─ python >=3.8,<3.9.0a0 , which can be installed;
│     ├─ scipy [1.10.0|1.10.1|...|1.9.3] would require
│     │  └─ python >=3.9,<3.10.0a0 , which can be installed;
│     ├─ scipy [1.10.0|1.10.1|...|1.9.3] would require
│     │  └─ python >=3.10,<3.11.0a0 *_cpython, which can be installed;
│     ├─ scipy [1.10.0|1.10.1|...|1.9.3] would require
│     │  └─ python >=3.8,<3.9.0a0 *_cpython, which can be installed;
│     ├─ scipy [1.10.0|1.10.1|...|1.9.3] would require
│     │  └─ python >=3.9,<3.10.0a0 *_cpython, which can be installed;
│     ├─ scipy [1.10.0|1.10.1|...|1.9.3] would require
│     │  └─ python >=3.11,<3.12.0a0 *_cpython, which can be installed;
│     ├─ scipy 1.11.3 would require
│     │  └─ python >=3.12,<3.13.0a0 *_cpython, which requires
│     │     └─ python_abi 3.12.* *_cp312, which conflicts with any installable versions previously reported;
│     ├─ scipy [1.10.0|1.10.1|...|1.9.3] would require
│     │  └─ python >=3.10,<3.11.0a0 , which can be installed;
│     └─ scipy [1.10.0|1.10.1|1.11.1|1.9.3] would require
│        └─ python >=3.11,<3.12.0a0 , which can be installed;
└─ python 3.12**  is uninstallable because there are no viable options
   ├─ python 3.12.0 conflicts with any installable versions previously reported;
   ├─ python 3.12.0, which cannot be installed (as previously explained);
   └─ python 3.12.0rc3 would require
      └─ _python_rc  , which does not exist (perhaps a missing channel).

I wonder if python 3.12.0 conflicts with any installable versions previously reported; is because we did not explicitly add python 3.12 here:
https://github.com/openPMD/openPMD-viewer/blob/dev/setup.py#L65

ax3l commented

Hi there,

Python 3.12 was just released and it will take a while until open-source distributions (PyPI, conda, etc.) have rolled out all dependencies for it.

We got our migration PR for openPMD-api - it just came in today 🎉 so we should have packages for it in a few hrs:
conda-forge/openpmd-api-feedstock#110

openPMD-viewer is a pure Python package, thus it should work once the openPMD-api buildstock has built the 3.12 packages and distributed them to the web (this also takes a few hours, because there is another layer of caching in content delivery networks for these binary packages that refreshes in regular intervals).

Let me know if this works if you try again tomorrow / on Monday.

Separately of conda, we will also need to roll out PyPI wheels for openPMD-api, in case you were wondering :)
(I'll take PyPI on next week in openPMD/openPMD-api#1543)

I wonder if python 3.12.0 conflicts with any installable versions previously reported; is because we did not explicitly add python 3.12 here:
https://github.com/openPMD/openPMD-viewer/blob/dev/setup.py#L65

No, that is just meta-data listed on PyPI as a category.
The line that is evaluated for Python version compatibility is this one:

python_requires='>=3.8',

It is best practice to keep it unconstrained for newer versions.

ax3l commented

@max-lehman14 @PrometheusPi I believe this problem is solved. Let me know if Python 3.12 now works for you as well and we can close this :)

@ax3l sorry for the late reply. I can confirm that installing openPMD-viewer with python 3.12.0 works now fine (on MacOS).