I have a quite large .yml
file that I use to create a conda environment. However, with the current specifications, I only get Python 3.8. Is there any way to trace back which packages and/or their combination hinder conda from installing the most recent python version? I would be willing to sacrifice those packages if it means that I can use a faster python version. Here's my .yml
file:
channels:
- conda-forge
- pyviz
- plotly
- pytorch
- ejolly
- districtdatalabs
- bokeh
- defaults
dependencies:
- bokeh
- python
- sklearn-pandas
- datalad
- tableone
- spyder
- scikit-learn
- nilearn
- nipype
- dash
- dash-bootstrap-components
- statannotations
- fastcluster
- pingouin
- mne
- tensorboardx
- neurokit2
- oct2py
- pybids
- yellowbrick
- pymer4
- plotly-orca
- plotly
- pytorch
- holoviews
- hvplot
- r-essentials
- r-matrixstats
- r-repr
- r-devtools
- jupyterlab
- r-base
- r-pma
- r-dendextend
- r-circlize
- r-reticulate
- pip
- pip:
- xmltodict
- adjustText
- dash-cytoscape
- brainrender
- network_control
- cca-zoo
- bctpy
- gemmr
- gower
- antropy
- pyvis
- distro
- abagen
- groupyr
- clustergrammer
- nisupply
- fmriprep-docker
- lckr-jupyterlab-variableinspector
First, if one wants a specific version, then declare it in the YAML. That way conflicts will arise and they can be reported.
Second, conda
- the CLI, not the ecosystem - has a poor track record for conflict reporting. Mamba, especially since v1.4.0 has vastly improved the user experience for this.
Setting python=3.11
, I see pymer4
is incompatible with this.
$ mamba env create -n foo -f so-env.yaml
Looking for: ['bokeh', 'python=3.11', 'sklearn-pandas', 'datalad', 'tableone', 'spyder', 'scikit-learn', 'nilearn', 'nipype', 'dash', 'dash-bootstrap-components', 'statannotations', 'fastcluster', 'pingouin', 'mne', 'tensorboardx', 'neurokit2', 'oct2py', 'pybids', 'yellowbrick', 'pymer4', 'plotly-orca', 'plotly', 'pytorch', 'holoviews', 'hvplot', 'r-essentials', 'r-matrixstats', 'r-repr', 'r-devtools', 'jupyterlab', 'r-base', 'r-pma', 'r-dendextend', 'r-circlize', 'r-reticulate', 'pip']
Could not solve for environment specs
The following packages are incompatible
├─ pymer4 is installable with the potential options
│ ├─ pymer4 [0.7.1|0.7.2|...|0.7.6] would require
│ │ └─ python >=3.8,<3.9.0a0 , which can be installed;
│ ├─ pymer4 [0.7.7|0.7.8] would require
│ │ ├─ python >=3.7,<3.8.0a0 , which can be installed;
│ │ └─ python_abi 3.7.* *_cp37m, which can be installed;
│ ├─ pymer4 [0.7.1|0.7.2|0.7.3|0.7.4|0.7.6] would require
│ │ └─ python >=3.7,<3.8.0a0 , which can be installed;
│ ├─ pymer4 [0.7.7|0.7.8] would require
│ │ ├─ python >=3.9,<3.10.0a0 , which can be installed;
│ │ └─ python_abi 3.9.* *_cp39, which can be installed;
│ ├─ pymer4 [0.7.7|0.7.8|0.8.0.9001] would require
│ │ ├─ python >=3.8,<3.9.0a0 , which can be installed;
│ │ └─ python_abi 3.8.* *_cp38, which can be installed;
│ ├─ pymer4 [0.7.1|0.7.2|0.7.3] would require
│ │ └─ python >=3.6,<3.7.0a0 , which can be installed;
│ └─ pymer4 0.7.6 would require
│ └─ python >=3.9,<3.10.0a0 , which can be installed;
└─ python 3.11** is not installable because there are no viable options
├─ python [3.11.0|3.11.2|3.11.3|3.11.4] conflicts with any installable versions previously reported;
└─ python [3.11.0|3.11.1|3.11.2|3.11.3|3.11.4] would require
└─ python_abi 3.11.* *_cp311, which conflicts with any installable versions previously reported.
That's not actually on Conda Forge, so it might be good to try getting it building there. It appears there is already an attempt started and they are looking for help.
Otherwise, dropping pymer4
from the YAML enables the Conda portion to solve without issue. However, the PyPI packages then fail to install. That seems like a separate question though, and it does indicate the failing package directly (morphio).
ERROR: Failed building wheel for morphio
ERROR: Could not build wheels for morphio, which is required to install pyproject.toml-based projects
failed
CondaEnvException: Pip failed