1

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
Anthon
  • 69,918
  • 32
  • 186
  • 246
Johannes Wiesner
  • 1,006
  • 12
  • 33
  • This looks like a YAML file, for which the officially recommended extension has been `.yaml` since at least September 2006. The older [YML](https://fdik.org/yml/) format looks completely different. – Anthon Aug 08 '23 at 11:57
  • Didn't know thanks! Shouldn't be of concern for my question though, right? :) – Johannes Wiesner Aug 08 '23 at 12:22
  • It should not effect what you are trying to do. But if the tools you are using (still) assume a `.yml` extension (or documentation uses that), it can give you an idea on how up to date those programs are. (Cannot help you with conda, never used it. But if you have problems with YAML parsing in Python, I'll find your question). – Anthon Aug 08 '23 at 13:38
  • Conda is fine with both the `.yml` and `.ymal` extension so that should be fine :) – Johannes Wiesner Aug 08 '23 at 13:43

1 Answers1

1

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
merv
  • 67,214
  • 13
  • 180
  • 245