conda / conda-libmamba-solver

The libmamba based solver for conda.
https://conda.github.io/conda-libmamba-solver/
Other
202 stars 24 forks source link

Conda and Mamba is grabbing wrong versions of package when install with version constraint #115

Closed daico007 closed 1 year ago

daico007 commented 2 years ago

Checklist

What happened?

One of our users bump into an issue when trying to install a package using conda, specifically conda is grabbing an incorrect version of a dependent package. He tried again with mamba and everything works fine. I was able to narrow down the issue to be with the version constraint in our environment.yml, specifically, conda was trying to grab a very old version, while mamba the most recent one less the constraint. To reproduce the issue:

Conda

conda install -c conda-forge "pydantic<1.9.0" 

Result

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    pydantic-0.18.2            |             py_0          35 KB  conda-forge
    ------------------------------------------------------------
                                           Total:          35 KB

The following NEW packages will be INSTALLED:

  dataclasses        conda-forge/noarch::dataclasses-0.8-pyhc8e2a94_3
  pydantic           conda-forge/noarch::pydantic-0.18.2-py_0

The following packages will be UPDATED:

  ca-certificates                    2022.5.18.1-h033912b_0 --> 2022.6.15-h033912b_0
  certifi                        2022.5.18.1-py39h6e9494a_0 --> 2022.6.15-py39h6e9494a_0
  openssl                                 1.1.1o-hfe4f2af_0 --> 1.1.1q-hfe4f2af_0

Mamba

mamba install -c conda-forge "pydantic<1.9.0"

Result

  Package                  Version  Build           Channel                  Size
───────────────────────────────────────────────────────────────────────────────────
  Install:
───────────────────────────────────────────────────────────────────────────────────

  + pydantic                 1.8.2  py39h89e85a6_2  conda-forge/osx-64     Cached
  + typing-extensions        4.3.0  hd8ed1ab_0      conda-forge/noarch     Cached
  + typing_extensions        4.3.0  pyha770c72_0    conda-forge/noarch     Cached

  Upgrade:
───────────────────────────────────────────────────────────────────────────────────

  - ca-certificates    2022.5.18.1  h033912b_0      installed                    
  + ca-certificates      2022.6.15  h033912b_0      conda-forge/osx-64     Cached
  - certifi            2022.5.18.1  py39h6e9494a_0  installed                    
  + certifi              2022.6.15  py39h6e9494a_0  conda-forge/osx-64     Cached
  - openssl                 1.1.1o  hfe4f2af_0      installed                    
  + openssl                 1.1.1q  hfe4f2af_0      conda-forge/osx-64     Cached

This might be relate to this https://github.com/conda/conda-libmamba-solver/issues/64, but since both are grabbing the same openssl make me unsure. Also, the way the two version differentiate (1.8.2 vs 0.18.2) make we think it may be a parsing issue?

Conda Details

conda info ```shell active environment : general active env location : /Users/quachcd/mambaforge/envs/general shell level : 2 user config file : /Users/quachcd/.condarc populated config files : /Users/quachcd/mambaforge/.condarc /Users/quachcd/.condarc conda version : 4.12.0 conda-build version : not installed python version : 3.9.6.final.0 virtual packages : __osx=12.1=0 __unix=0=0 __archspec=1=x86_64 base environment : /Users/quachcd/mambaforge (writable) conda av data dir : /Users/quachcd/mambaforge/etc/conda conda av metadata url : None channel URLs : https://conda.anaconda.org/conda-forge/osx-64 https://conda.anaconda.org/conda-forge/noarch https://conda.anaconda.org/mosdef/osx-64 https://conda.anaconda.org/mosdef/noarch https://conda.anaconda.org/omnia/osx-64 https://conda.anaconda.org/omnia/noarch https://conda.anaconda.org/bioconda/osx-64 https://conda.anaconda.org/bioconda/noarch https://repo.anaconda.com/pkgs/main/osx-64 https://repo.anaconda.com/pkgs/main/noarch https://repo.anaconda.com/pkgs/r/osx-64 https://repo.anaconda.com/pkgs/r/noarch package cache : /Users/quachcd/mambaforge/pkgs /Users/quachcd/.conda/pkgs envs directories : /Users/quachcd/mambaforge/envs /Users/quachcd/.conda/envs platform : osx-64 user-agent : conda/4.12.0 requests/2.26.0 CPython/3.9.6 Darwin/21.2.0 OSX/12.1 UID:GID : 501:20 netrc file : None offline mode : False ```
conda config ```shell ==> /Users/quachcd/mambaforge/.condarc <== channels: - conda-forge ==> /Users/quachcd/.condarc <== ssl_verify: True channels: - conda-forge - mosdef - omnia - bioconda - defaults ```
conda list ```shell # packages in environment at /Users/quachcd/mambaforge: # # Name Version Build Channel ansi2html 1.7.0 py39h6e9494a_1 conda-forge appnope 0.1.3 pyhd8ed1ab_0 conda-forge asttokens 2.0.5 pyhd8ed1ab_0 conda-forge backcall 0.2.0 pyh9f0ad1d_0 conda-forge backports 1.0 py_2 conda-forge backports.functools_lru_cache 1.6.4 pyhd8ed1ab_0 conda-forge brotli-python 1.0.9 py39hfd1d529_7 conda-forge brotlipy 0.7.0 py39h89e85a6_1001 conda-forge bzip2 1.0.8 h0d85af4_4 conda-forge c-ares 1.17.2 h0d85af4_0 conda-forge ca-certificates 2022.5.18.1 h033912b_0 conda-forge certifi 2022.5.18.1 py39h6e9494a_0 conda-forge cffi 1.14.6 py39hb71fe58_0 conda-forge chardet 4.0.0 py39h6e9494a_1 conda-forge charset-normalizer 2.0.0 pyhd8ed1ab_0 conda-forge click 8.1.3 py39h6e9494a_0 conda-forge colorama 0.4.4 pyh9f0ad1d_0 conda-forge conda 4.12.0 py39h6e9494a_0 conda-forge conda-package-handling 1.7.3 py39h89e85a6_0 conda-forge cryptography 3.4.7 py39ha2c9959_0 conda-forge dash 2.4.1 pyhd8ed1ab_0 conda-forge debugpy 1.6.0 py39hfd1d529_0 conda-forge decorator 5.1.1 pyhd8ed1ab_0 conda-forge entrypoints 0.4 pyhd8ed1ab_0 conda-forge executing 0.8.3 pyhd8ed1ab_0 conda-forge flask 2.1.2 pyhd8ed1ab_1 conda-forge flask-compress 1.12 pyhd8ed1ab_0 conda-forge icu 68.1 h74dc148_0 conda-forge idna 3.1 pyhd3deb0d_0 conda-forge importlib-metadata 4.11.4 py39h6e9494a_0 conda-forge ipykernel 6.13.0 py39h71a6800_0 conda-forge ipython 8.3.0 py39h6e9494a_0 conda-forge itsdangerous 2.1.2 pyhd8ed1ab_0 conda-forge jedi 0.18.1 py39h6e9494a_1 conda-forge jinja2 3.1.2 pyhd8ed1ab_0 conda-forge jupyter-dash 0.4.2 pyhd8ed1ab_1 conda-forge jupyter_client 7.0.6 pyhd8ed1ab_0 conda-forge jupyter_core 4.10.0 py39h6e9494a_0 conda-forge krb5 1.19.2 hcfbf3a7_0 conda-forge libarchive 3.5.1 h2b60450_2 conda-forge libcurl 7.78.0 hf45b732_0 conda-forge libcxx 12.0.1 habf9029_0 conda-forge libedit 3.1.20191231 h0678c8f_2 conda-forge libev 4.33 haf1e3a3_1 conda-forge libffi 3.3 h046ec9c_2 conda-forge libiconv 1.16 haf1e3a3_0 conda-forge libnghttp2 1.43.0 h07e645a_0 conda-forge libsodium 1.0.18 hbcb3906_1 conda-forge libsolv 0.7.19 hcf210ce_5 conda-forge libssh2 1.9.0 h52ee1ee_6 conda-forge libxml2 2.9.12 h93ec3fd_0 conda-forge lz4-c 1.9.3 he49afe7_1 conda-forge lzo 2.10 haf1e3a3_1000 conda-forge mamba 0.15.3 py39hb671511_0 conda-forge markupsafe 2.1.1 py39h63b48b0_1 conda-forge matplotlib-inline 0.1.3 pyhd8ed1ab_0 conda-forge ncurses 6.2 h2e338ed_4 conda-forge nest-asyncio 1.5.5 pyhd8ed1ab_0 conda-forge openssl 1.1.1o hfe4f2af_0 conda-forge packaging 21.3 pyhd8ed1ab_0 conda-forge parso 0.8.3 pyhd8ed1ab_0 conda-forge pexpect 4.8.0 pyh9f0ad1d_2 conda-forge pickleshare 0.7.5 py_1003 conda-forge pip 21.2.4 pyhd8ed1ab_0 conda-forge plotly 5.8.0 pyhd8ed1ab_1 conda-forge prompt-toolkit 3.0.29 pyha770c72_0 conda-forge psutil 5.9.1 py39h701faf5_0 conda-forge ptyprocess 0.7.0 pyhd3deb0d_0 conda-forge pure_eval 0.2.2 pyhd8ed1ab_0 conda-forge pycosat 0.6.3 py39h89e85a6_1006 conda-forge pycparser 2.20 pyh9f0ad1d_2 conda-forge pygments 2.12.0 pyhd8ed1ab_0 conda-forge pyopenssl 20.0.1 pyhd8ed1ab_0 conda-forge pyparsing 3.0.9 pyhd8ed1ab_0 conda-forge pysocks 1.7.1 py39h6e9494a_3 conda-forge python 3.9.6 hd187cdc_1_cpython conda-forge python-dateutil 2.8.2 pyhd8ed1ab_0 conda-forge python_abi 3.9 2_cp39 conda-forge pyzmq 19.0.2 py39he75b00d_2 conda-forge readline 8.1 h05e3726_0 conda-forge reproc 14.2.1 hbcb3906_0 conda-forge reproc-cpp 14.2.1 h2e338ed_0 conda-forge requests 2.26.0 pyhd8ed1ab_0 conda-forge retrying 1.3.3 py_2 conda-forge ruamel_yaml 0.15.80 py39h89e85a6_1004 conda-forge setuptools 57.4.0 py39h6e9494a_0 conda-forge six 1.16.0 pyh6c4a22f_0 conda-forge sqlite 3.36.0 h23a322b_0 conda-forge stack_data 0.2.0 pyhd8ed1ab_0 conda-forge tenacity 8.0.1 pyhd8ed1ab_0 conda-forge tk 8.6.11 hd798d34_0 conda-forge tornado 6.1 py39h63b48b0_3 conda-forge tqdm 4.62.1 pyhd8ed1ab_0 conda-forge traitlets 5.2.1.post0 pyhd8ed1ab_0 conda-forge tzdata 2021a he74cb21_1 conda-forge urllib3 1.26.6 pyhd8ed1ab_0 conda-forge wcwidth 0.2.5 pyh9f0ad1d_2 conda-forge werkzeug 2.1.2 pyhd8ed1ab_1 conda-forge wheel 0.37.0 pyhd8ed1ab_1 conda-forge xz 5.2.5 haf1e3a3_1 conda-forge yaml 0.2.5 haf1e3a3_0 conda-forge zeromq 4.3.4 he49afe7_1 conda-forge zipp 3.8.0 pyhd8ed1ab_0 conda-forge zlib 1.2.11 h7795811_1010 conda-forge zstd 1.5.0 h582d3a0_0 conda-forge ```
kenodegard commented 2 years ago

@daico007 I can replicate this, very weird, thanks for reporting, will investigate further

jaimergp commented 2 years ago

Might have to do with the stuck openssl=3 migration.

ipcoder commented 2 years ago

Here is another example, in this case mamba solves differently than conda with libmamba: (especially notice wrong cpu instead of cuda version is selected for pytorch and torchvision)

mamba

❯ mamba install pytorch==1.10.2 torchvision==0.11.3  cudatoolkit=11.3
  Package             Version  Build                Channel                    Size
─────────────────────────────────────────────────────────────────────────────────────
  Install:
─────────────────────────────────────────────────────────────────────────────────────

  + cudatoolkit        11.3.1  h9edb442_10          conda-forge/linux-64      856MB
  + ffmpeg              4.3.2  h37c90e5_3           conda-forge/linux-64       10MB
  + future             0.18.2  py39hf3d152e_5       conda-forge/linux-64     Cached
  + gmp                 6.2.1  h58526e2_0           conda-forge/linux-64      826kB
  + gnutls             3.6.13  h85f3911_1           conda-forge/linux-64        2MB
  + lame                3.100  h7f98852_1001        conda-forge/linux-64      508kB
  + libprotobuf        3.19.4  h780b84a_0           conda-forge/linux-64        3MB
  + llvm-openmp        14.0.4  he0ac6c6_0           conda-forge/linux-64        6MB
  + mkl              2022.1.0  h84fe81f_915         conda-forge/linux-64      209MB
  + nettle                3.6  he412f7d_0           conda-forge/linux-64        7MB
  + ninja              1.11.0  h924138e_0           conda-forge/linux-64        3MB
  + openh264            2.1.1  h780b84a_0           conda-forge/linux-64        2MB
  + pytorch            1.10.2  cpu_py39h5e9ed0b_1   conda-forge/linux-64       57MB
  + sleef               3.5.1  h9b69904_2           conda-forge/linux-64        2MB
  + tbb              2021.5.0  h924138e_2           conda-forge/linux-64        2MB
  + torchvision        0.11.3  cpu_py39hfc47f1b_2   conda-forge/linux-64        7MB
  + x264           1!161.3030  h7f98852_1           conda-forge/linux-64        3MB
  + zlib               1.2.12  h166bdaf_3           conda-forge/linux-64       94kB

  Change:
─────────────────────────────────────────────────────────────────────────────────────

  - _openmp_mutex         4.5  2_gnu                conda-forge                    
  + _openmp_mutex         4.5  2_kmp_llvm           conda-forge/linux-64        6kB
  - libblas             3.9.0  16_linux64_openblas  conda-forge                    
  + libblas             3.9.0  16_linux64_mkl       conda-forge/linux-64       13kB
  - libcblas            3.9.0  16_linux64_openblas  conda-forge                    
  + libcblas            3.9.0  16_linux64_mkl       conda-forge/linux-64       13kB
  - liblapack           3.9.0  16_linux64_openblas  conda-forge                    
  + liblapack           3.9.0  16_linux64_mkl       conda-forge/linux-64       13kB

  Downgrade:
─────────────────────────────────────────────────────────────────────────────────────

  - setuptools         65.3.0  pyhd8ed1ab_1         conda-forge                    
  + setuptools         59.5.0  py39hf3d152e_0       conda-forge/linux-64        1MB

conda

❯ conda install pytorch==1.10.2 torchvision==0.11.3  cudatoolkit=11.3 --experimental-solver=libmamba
The following NEW packages will be INSTALLED:

  cudatoolkit        conda-forge/linux-64::cudatoolkit-11.3.1-h9edb442_10
  cudnn              conda-forge/linux-64::cudnn-8.4.1.50-hed8a83a_0
  ffmpeg             conda-forge/linux-64::ffmpeg-4.3.2-h37c90e5_3
  future             conda-forge/linux-64::future-0.18.2-py39hf3d152e_5
  gmp                conda-forge/linux-64::gmp-6.2.1-h58526e2_0
  gnutls             conda-forge/linux-64::gnutls-3.6.13-h85f3911_1
  lame               conda-forge/linux-64::lame-3.100-h7f98852_1001
  libprotobuf        conda-forge/linux-64::libprotobuf-3.19.4-h780b84a_0
  llvm-openmp        conda-forge/linux-64::llvm-openmp-14.0.4-he0ac6c6_0
  magma              conda-forge/linux-64::magma-2.5.4-h6103c52_2
  mkl                conda-forge/linux-64::mkl-2022.1.0-h84fe81f_915
  nccl               conda-forge/linux-64::nccl-2.14.3.1-h0800d71_0
  nettle             conda-forge/linux-64::nettle-3.6-he412f7d_0
  ninja              conda-forge/linux-64::ninja-1.11.0-h924138e_0
  openh264           conda-forge/linux-64::openh264-2.1.1-h780b84a_0
  pytorch            conda-forge/linux-64::pytorch-1.10.2-cuda112py39h4de5995_1
  sleef              conda-forge/linux-64::sleef-3.5.1-h9b69904_2
  tbb                conda-forge/linux-64::tbb-2021.5.0-h924138e_2
  torchvision        conda-forge/linux-64::torchvision-0.11.3-cuda112py39ha475c55_2
  x264               conda-forge/linux-64::x264-1!161.3030-h7f98852_1
  zlib               conda-forge/linux-64::zlib-1.2.12-h166bdaf_3

The following packages will be SUPERSEDED by a higher-priority channel:

  setuptools         conda-forge/noarch::setuptools-65.3.0~ --> conda-forge/linux-64::setuptools-59.5.0-py39hf3d152e_0

The following packages will be DOWNGRADED:

  _openmp_mutex                                   4.5-2_gnu --> 4.5-2_kmp_llvm
  libblas                         3.9.0-16_linux64_openblas --> 3.9.0-16_linux64_mkl
  libcblas                        3.9.0-16_linux64_openblas --> 3.9.0-16_linux64_mkl
  liblapack                       3.9.0-16_linux64_openblas --> 3.9.0-16_linux64_mkl

Details

conda info

``` ❯ conda info active environment : base active env location : /home/ilyap/miniconda3 shell level : 1 user config file : /home/ilyap/.condarc populated config files : /home/ilyap/.condarc conda version : 4.14.0 conda-build version : not installed python version : 3.9.13.final.0 virtual packages : __cuda=11.4=0 __linux=5.15.0=0 __glibc=2.35=0 __unix=0=0 __archspec=1=x86_64 base environment : /home/ilyap/miniconda3 (writable) conda av data dir : /home/ilyap/miniconda3/etc/conda conda av metadata url : None channel URLs : https://conda.anaconda.org/conda-forge/linux-64 https://conda.anaconda.org/conda-forge/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 package cache : /home/ilyap/miniconda3/pkgs /home/ilyap/.conda/pkgs envs directories : /home/ilyap/miniconda3/envs /home/ilyap/.conda/envs platform : linux-64 user-agent : conda/4.14.0 requests/2.28.1 CPython/3.9.13 Linux/5.15.0-48-generic ubuntu/22.04.1 glibc/2.35 UID:GID : 1001:1001 netrc file : None offline mode : False ```

conarc

``` ❯ /bin/cat ~/.condarc channels: - conda-forge - defaults channel_priority: strict ```

conda list

``` ❯ conda list # packages in environment at ~/miniconda3: # # Name Version Build Channel _libgcc_mutex 0.1 conda_forge conda-forge _openmp_mutex 4.5 2_gnu conda-forge anyio 3.6.1 pyhd8ed1ab_1 conda-forge argon2-cffi 21.3.0 pyhd8ed1ab_0 conda-forge argon2-cffi-bindings 21.2.0 py39hb9d737c_2 conda-forge asttokens 2.0.8 pyhd8ed1ab_0 conda-forge attrs 22.1.0 pyh71513ae_1 conda-forge babel 2.10.3 pyhd8ed1ab_0 conda-forge backcall 0.2.0 pyh9f0ad1d_0 conda-forge backports 1.0 py_2 conda-forge backports.functools_lru_cache 1.6.4 pyhd8ed1ab_0 conda-forge beautifulsoup4 4.11.1 pyha770c72_0 conda-forge bleach 5.0.1 pyhd8ed1ab_0 conda-forge brotli 1.0.9 h166bdaf_7 conda-forge brotli-bin 1.0.9 h166bdaf_7 conda-forge brotlipy 0.7.0 py39hb9d737c_1004 conda-forge bzip2 1.0.8 h7f98852_4 conda-forge c-ares 1.18.1 h7f98852_0 conda-forge ca-certificates 2022.6.15.1 ha878542_0 conda-forge certifi 2022.6.15.1 pyhd8ed1ab_0 conda-forge cffi 1.15.1 py39he91dace_0 conda-forge charset-normalizer 2.1.1 pyhd8ed1ab_0 conda-forge colorama 0.4.5 pyhd8ed1ab_0 conda-forge conda 4.14.0 py39hf3d152e_0 conda-forge conda-libmamba-solver 22.8.1 pyhd8ed1ab_0 conda-forge conda-package-handling 1.8.1 py39hb9d737c_1 conda-forge cryptography 37.0.4 py39hd97740a_0 conda-forge cycler 0.11.0 pyhd8ed1ab_0 conda-forge debugpy 1.6.3 py39h5a03fae_0 conda-forge decorator 5.1.1 pyhd8ed1ab_0 conda-forge defusedxml 0.7.1 pyhd8ed1ab_0 conda-forge entrypoints 0.4 pyhd8ed1ab_0 conda-forge executing 1.0.0 pyhd8ed1ab_0 conda-forge flit-core 3.7.1 pyhd8ed1ab_0 conda-forge fonttools 4.37.1 py39hb9d737c_0 conda-forge freetype 2.12.1 hca18f0e_0 conda-forge icu 70.1 h27087fc_0 conda-forge idna 3.3 pyhd8ed1ab_0 conda-forge importlib-metadata 4.11.4 py39hf3d152e_0 conda-forge importlib_metadata 4.11.4 hd8ed1ab_0 conda-forge importlib_resources 5.9.0 pyhd8ed1ab_0 conda-forge ipykernel 6.15.2 pyh210e3f2_0 conda-forge ipympl 0.9.2 pyhd8ed1ab_0 conda-forge ipython 8.5.0 pyh41d4057_1 conda-forge ipython_genutils 0.2.0 py_1 conda-forge ipywidgets 8.0.2 pyhd8ed1ab_1 conda-forge jedi 0.18.1 pyhd8ed1ab_2 conda-forge jinja2 3.1.2 pyhd8ed1ab_1 conda-forge jpeg 9e h166bdaf_2 conda-forge json5 0.9.5 pyh9f0ad1d_0 conda-forge jsonschema 4.16.0 pyhd8ed1ab_0 conda-forge jupyter-lsp 1.5.1 pyhd8ed1ab_0 conda-forge jupyter_client 7.3.5 pyhd8ed1ab_0 conda-forge jupyter_core 4.11.1 py39hf3d152e_0 conda-forge jupyter_server 1.18.1 pyhd8ed1ab_0 conda-forge jupyterlab 3.4.7 pyhd8ed1ab_0 conda-forge jupyterlab-lsp 3.10.2 pyhd8ed1ab_0 conda-forge jupyterlab_pygments 0.2.2 pyhd8ed1ab_0 conda-forge jupyterlab_server 2.15.1 pyhd8ed1ab_0 conda-forge jupyterlab_widgets 3.0.3 pyhd8ed1ab_0 conda-forge keyutils 1.6.1 h166bdaf_0 conda-forge kiwisolver 1.4.4 py39hf939315_0 conda-forge krb5 1.19.3 h3790be6_0 conda-forge lcms2 2.12 hddcbb42_0 conda-forge ld_impl_linux-64 2.36.1 hea4e1c9_2 conda-forge lerc 4.0.0 h27087fc_0 conda-forge libarchive 3.5.2 hb890918_3 conda-forge libblas 3.9.0 16_linux64_openblas conda-forge libbrotlicommon 1.0.9 h166bdaf_7 conda-forge libbrotlidec 1.0.9 h166bdaf_7 conda-forge libbrotlienc 1.0.9 h166bdaf_7 conda-forge libcblas 3.9.0 16_linux64_openblas conda-forge libcurl 7.83.1 h7bff187_0 conda-forge libdeflate 1.14 h166bdaf_0 conda-forge libedit 3.1.20191231 he28a2e2_2 conda-forge libev 4.33 h516909a_1 conda-forge libffi 3.4.2 h7f98852_5 conda-forge libgcc-ng 12.1.0 h8d9b700_16 conda-forge libgfortran-ng 12.1.0 h69a702a_16 conda-forge libgfortran5 12.1.0 hdcd56e2_16 conda-forge libgomp 12.1.0 h8d9b700_16 conda-forge libiconv 1.16 h516909a_0 conda-forge liblapack 3.9.0 16_linux64_openblas conda-forge libmamba 0.25.0 hd8a31e3_2 conda-forge libmambapy 0.25.0 py39hd55135b_2 conda-forge libnghttp2 1.47.0 hdcd2b5c_1 conda-forge libnsl 2.0.0 h7f98852_0 conda-forge libopenblas 0.3.21 pthreads_h78a6416_3 conda-forge libpng 1.6.37 h753d276_4 conda-forge libsodium 1.0.18 h36c2ea0_1 conda-forge libsolv 0.7.22 h6239696_0 conda-forge libsqlite 3.39.3 h753d276_0 conda-forge libssh2 1.10.0 haa6b8db_3 conda-forge libstdcxx-ng 12.1.0 ha89aaad_16 conda-forge libtiff 4.4.0 h55922b4_4 conda-forge libuuid 2.32.1 h7f98852_1000 conda-forge libwebp-base 1.2.4 h166bdaf_0 conda-forge libxcb 1.13 h7f98852_1004 conda-forge libxml2 2.9.14 h22db469_4 conda-forge libxslt 1.1.35 h8affb1d_0 conda-forge libzlib 1.2.12 h166bdaf_3 conda-forge lxml 4.9.1 py39hb9d737c_0 conda-forge lz4-c 1.9.3 h9c3ff4c_1 conda-forge lzo 2.10 h516909a_1000 conda-forge mamba 0.25.0 py39hfa8f2c8_2 conda-forge markupsafe 2.1.1 py39hb9d737c_1 conda-forge matplotlib-base 3.5.3 py39h19d6b11_2 conda-forge matplotlib-inline 0.1.6 pyhd8ed1ab_0 conda-forge mistune 2.0.4 pyhd8ed1ab_0 conda-forge munkres 1.1.4 pyh9f0ad1d_0 conda-forge nbclassic 0.4.3 pyhd8ed1ab_0 conda-forge nbclient 0.6.8 pyhd8ed1ab_0 conda-forge nbconvert 7.0.0 pyhd8ed1ab_0 conda-forge nbconvert-core 7.0.0 pyhd8ed1ab_0 conda-forge nbconvert-pandoc 7.0.0 pyhd8ed1ab_0 conda-forge nbformat 5.5.0 pyhd8ed1ab_0 conda-forge ncurses 6.3 h27087fc_1 conda-forge nest-asyncio 1.5.5 pyhd8ed1ab_0 conda-forge notebook 6.4.12 pyha770c72_0 conda-forge notebook-shim 0.1.0 pyhd8ed1ab_0 conda-forge numpy 1.23.3 py39hba7629e_0 conda-forge openjpeg 2.5.0 h7d73246_1 conda-forge openssl 1.1.1q h166bdaf_0 conda-forge packaging 21.3 pyhd8ed1ab_0 conda-forge pandoc 2.19.2 ha770c72_0 conda-forge pandocfilters 1.5.0 pyhd8ed1ab_0 conda-forge parso 0.8.3 pyhd8ed1ab_0 conda-forge pexpect 4.8.0 pyh9f0ad1d_2 conda-forge pickleshare 0.7.5 py_1003 conda-forge pillow 9.2.0 py39hd5dbb17_2 conda-forge pip 22.2.2 pyhd8ed1ab_0 conda-forge pkgutil-resolve-name 1.3.10 pyhd8ed1ab_0 conda-forge prometheus_client 0.14.1 pyhd8ed1ab_0 conda-forge prompt-toolkit 3.0.31 pyha770c72_0 conda-forge psutil 5.9.2 py39hb9d737c_0 conda-forge pthread-stubs 0.4 h36c2ea0_1001 conda-forge ptyprocess 0.7.0 pyhd3deb0d_0 conda-forge pure_eval 0.2.2 pyhd8ed1ab_0 conda-forge pybind11-abi 4 hd8ed1ab_3 conda-forge pycosat 0.6.3 py39hb9d737c_1010 conda-forge pycparser 2.21 pyhd8ed1ab_0 conda-forge pygments 2.13.0 pyhd8ed1ab_0 conda-forge pyopenssl 22.0.0 pyhd8ed1ab_0 conda-forge pyparsing 3.0.9 pyhd8ed1ab_0 conda-forge pyrsistent 0.18.1 py39hb9d737c_1 conda-forge pysocks 1.7.1 pyha2e5f31_6 conda-forge python 3.9.13 h9a8a25e_0_cpython conda-forge python-dateutil 2.8.2 pyhd8ed1ab_0 conda-forge python-fastjsonschema 2.16.1 pyhd8ed1ab_0 conda-forge python_abi 3.9 2_cp39 conda-forge pytz 2022.2.1 pyhd8ed1ab_0 conda-forge pyzmq 23.2.1 py39headdf64_0 conda-forge readline 8.1.2 h0f457ee_0 conda-forge reproc 14.2.3 h7f98852_0 conda-forge reproc-cpp 14.2.3 h9c3ff4c_0 conda-forge requests 2.28.1 pyhd8ed1ab_1 conda-forge ruamel_yaml 0.15.80 py39hb9d737c_1007 conda-forge send2trash 1.8.0 pyhd8ed1ab_0 conda-forge setuptools 65.3.0 pyhd8ed1ab_1 conda-forge six 1.16.0 pyh6c4a22f_0 conda-forge sniffio 1.3.0 pyhd8ed1ab_0 conda-forge soupsieve 2.3.2.post1 pyhd8ed1ab_0 conda-forge sqlite 3.39.3 h4ff8645_0 conda-forge stack_data 0.5.0 pyhd8ed1ab_0 conda-forge terminado 0.15.0 py39hf3d152e_0 conda-forge tinycss2 1.1.1 pyhd8ed1ab_0 conda-forge tk 8.6.12 h27826a3_0 conda-forge tomli 2.0.1 pyhd8ed1ab_0 conda-forge toolz 0.12.0 pyhd8ed1ab_0 conda-forge tornado 6.2 py39hb9d737c_0 conda-forge tqdm 4.64.1 pyhd8ed1ab_0 conda-forge traitlets 5.4.0 pyhd8ed1ab_0 conda-forge typing_extensions 4.3.0 pyha770c72_0 conda-forge tzdata 2022c h191b570_0 conda-forge unicodedata2 14.0.0 py39hb9d737c_1 conda-forge urllib3 1.26.11 pyhd8ed1ab_0 conda-forge wcwidth 0.2.5 pyh9f0ad1d_2 conda-forge webencodings 0.5.1 py_1 conda-forge websocket-client 1.4.1 pyhd8ed1ab_0 conda-forge wheel 0.37.1 pyhd8ed1ab_0 conda-forge widgetsnbextension 4.0.3 pyhd8ed1ab_0 conda-forge xorg-libxau 1.0.9 h7f98852_0 conda-forge xorg-libxdmcp 1.1.3 h7f98852_0 conda-forge xz 5.2.6 h166bdaf_0 conda-forge yaml 0.2.5 h7f98852_2 conda-forge yaml-cpp 0.7.0 h27087fc_1 conda-forge zeromq 4.3.4 h9c3ff4c_1 conda-forge zipp 3.8.1 pyhd8ed1ab_0 conda-forge zstd 1.5.2 h6239696_4 conda-forge ```

agitter commented 2 years ago

I experienced an issue that is somewhat related but not identical. If it is sufficiently different, I'll open a new issue.

In my case, I was installing the same PyTorch environment with classic and libmamba solvers:

$ conda env create -f pyg-minimal.yml --experimental-solver classic
$ conda env create -f pyg-minimal.yml --experimental-solver libmamba

The classic solver correctly installed the CPU versions but the libmamba solver incorrectly installed cudatoolkit and the CUDA versions.

pyg-minimal.yml:

name: pyg
channels:
  - conda-forge
  - pyg
  - pytorch
dependencies:
  - cpuonly
  - pyg=2.1.0
  - python=3.9
  - pytorch::pytorch=1.12
jaimergp commented 1 year ago

@ipcoder - in which environment are you trying to install those packages? I am trying to reproduce but taking your base gives unsolvable, so I am assuming it has to do with a different environment.

ipcoder-base.yaml.txt

ipcoder commented 1 year ago

@jaimergp I believe its an empty python 3.9 environment which I populate with the commands above.

It was awhile ago, and I could forget, but I usually work in separate environment, not in the base.

jaimergp commented 1 year ago

@daico007 - I took your environment (no dev) from this PR (https://github.com/mosdef-hub/gmso/pull/689), reverted the pydantic dependency to < 1.9.0, and ran it on a clean Docker image:

daico007.yaml.txt

$ CONDA_SUBDIR=linux-64 conda env create -f daico007.yaml --solver=libmamba --dry-run
conda-forge/noarch                                          Using cache
conda-forge/linux-64                                29.6MB @   2.3MB/s 21.0s
Collect all metadata (repodata.json): done
Solving environment: done
name: daico007
channels:
  - conda-forge
dependencies:
  - conda-forge/linux-64::_libgcc_mutex==0.1=conda_forge
  - conda-forge/linux-64::ca-certificates==2022.12.7=ha878542_0
  - conda-forge/linux-64::ld_impl_linux-64==2.40=h41732ed_0
  - conda-forge/linux-64::libgfortran5==12.2.0=h337968e_19
  - conda-forge/linux-64::libstdcxx-ng==12.2.0=h46fd767_19
  - conda-forge/linux-64::python_abi==3.11=3_cp311
  - conda-forge/noarch::tzdata==2022g=h191b570_0
  - conda-forge/linux-64::libgfortran-ng==12.2.0=h69a702a_19
  - conda-forge/linux-64::libgomp==12.2.0=h65d4601_19
  - conda-forge/linux-64::_openmp_mutex==4.5=2_gnu
  - conda-forge/linux-64::libgcc-ng==12.2.0=h65d4601_19
  - conda-forge/linux-64::bzip2==1.0.8=h7f98852_4
  - conda-forge/linux-64::cudatoolkit==11.8.0=h37601d7_11
  - conda-forge/linux-64::gmp==6.2.1=h58526e2_0
  - conda-forge/linux-64::icu==70.1=h27087fc_0
  - conda-forge/linux-64::libffi==3.4.2=h7f98852_5
  - conda-forge/linux-64::libiconv==1.17=h166bdaf_0
  - conda-forge/linux-64::libnsl==2.0.0=h7f98852_0
  - conda-forge/linux-64::libopenblas==0.3.21=pthreads_h78a6416_3
  - conda-forge/linux-64::libuuid==2.32.1=h7f98852_1000
  - conda-forge/linux-64::libzlib==1.2.13=h166bdaf_4
  - conda-forge/linux-64::ncurses==6.3=h27087fc_1
  - conda-forge/linux-64::ocl-icd==2.3.1=h7f98852_0
  - conda-forge/linux-64::openssl==3.0.8=h0b41bf4_0
  - conda-forge/linux-64::xz==5.2.6=h166bdaf_0
  - conda-forge/linux-64::libblas==3.9.0=16_linux64_openblas
  - conda-forge/linux-64::libprotobuf==3.21.12=h3eb15da_0
  - conda-forge/linux-64::libsqlite==3.40.0=h753d276_0
  - conda-forge/linux-64::libxml2==2.10.3=h7463322_0
  - conda-forge/linux-64::mpfr==4.1.0=h9202a9a_1
  - conda-forge/linux-64::ocl-icd-system==1.0.0=1
  - conda-forge/linux-64::readline==8.1.2=h0f457ee_0
  - conda-forge/linux-64::tk==8.6.12=h27826a3_0
  - conda-forge/linux-64::libcblas==3.9.0=16_linux64_openblas
  - conda-forge/linux-64::liblapack==3.9.0=16_linux64_openblas
  - conda-forge/linux-64::libxslt==1.1.37=h873f0b0_0
  - conda-forge/linux-64::mpc==1.3.1=hfe3b2da_0
  - conda-forge/linux-64::python==3.11.0=he550d4f_1_cpython
  - conda-forge/noarch::boltons==21.0.0=pyhd8ed1ab_0
  - conda-forge/noarch::certifi==2022.12.7=pyhd8ed1ab_0
  - conda-forge/noarch::charset-normalizer==2.1.1=pyhd8ed1ab_0
  - conda-forge/noarch::dataclasses==0.8=pyhc8e2a94_3
  - conda-forge/noarch::ele==0.2.0=pyhd8ed1ab_0
  - conda-forge/linux-64::gmpy2==2.1.2=py311h6a5fa03_1
  - conda-forge/noarch::idna==3.4=pyhd8ed1ab_0
  - conda-forge/noarch::lark-parser==0.12.0=pyhd8ed1ab_0
  - conda-forge/linux-64::lxml==4.9.2=py311h14a6109_0
  - conda-forge/noarch::mpmath==1.2.1=pyhd8ed1ab_0
  - conda-forge/noarch::networkx==3.0=pyhd8ed1ab_0
  - conda-forge/linux-64::numpy==1.24.2=py311h8e6699e_0
  - conda-forge/noarch::pycparser==2.21=pyhd8ed1ab_0
  - conda-forge/noarch::pysocks==1.7.1=pyha2e5f31_6
  - conda-forge/noarch::pytz==2022.7.1=pyhd8ed1ab_0
  - conda-forge/noarch::setuptools==67.1.0=pyhd8ed1ab_0
  - conda-forge/noarch::six==1.16.0=pyh6c4a22f_0
  - conda-forge/noarch::wheel==0.38.4=pyhd8ed1ab_0
  - conda-forge/linux-64::cffi==1.15.1=py311h409f033_3
  - conda-forge/linux-64::openmm==8.0.0=py311h59c6c42_0
  - conda-forge/noarch::pip==23.0=pyhd8ed1ab_0
  - conda-forge/linux-64::protobuf==4.21.12=py311hcafe171_0
  - conda-forge/noarch::pydantic==0.18.2=py_0
  - conda-forge/noarch::python-dateutil==2.8.2=pyhd8ed1ab_0
  - conda-forge/linux-64::sympy==1.11.1=py311h38be061_2
  - conda-forge/linux-64::brotlipy==0.7.0=py311hd4cff14_1005
  - conda-forge/linux-64::cryptography==39.0.1=py311h9b4c7bb_0
  - conda-forge/linux-64::pandas==1.5.3=py311h2872171_0
  - conda-forge/noarch::unyt==2.8.0=py_0
  - conda-forge/noarch::gmso==0.9.0=pyhd8ed1ab_0
  - conda-forge/linux-64::parmed==4.0.0=py311hcafe171_0
  - conda-forge/noarch::pyopenssl==23.0.0=pyhd8ed1ab_0
  - conda-forge/noarch::urllib3==1.26.14=pyhd8ed1ab_0
  - conda-forge/noarch::requests==2.28.2=pyhd8ed1ab_0
  - conda-forge/noarch::foyer==0.11.3=pyhd8ed1ab_0
  - conda-forge/noarch::forcefield-utilities==0.2.1=pyhd8ed1ab_0

conda-forge/noarch::pydantic==0.18.2=py_0 is being chosen, which reproduces what you saw. classic does get 1.8.2. (note: updated this sentence to fix an oversight)

classic ``` $ CONDA_SUBDIR=linux-64 conda env create -f daico007.yaml --solver=classic --dry-run Collecting package metadata (repodata.json): done Solving environment: done name: daico007 channels: - conda-forge dependencies: - conda-forge/linux-64::_libgcc_mutex==0.1=conda_forge - conda-forge/linux-64::ca-certificates==2022.12.7=ha878542_0 - conda-forge/linux-64::ld_impl_linux-64==2.40=h41732ed_0 - conda-forge/linux-64::libgfortran5==12.2.0=h337968e_19 - conda-forge/linux-64::libstdcxx-ng==12.2.0=h46fd767_19 - conda-forge/linux-64::python_abi==3.10=3_cp310 - conda-forge/noarch::tzdata==2022g=h191b570_0 - conda-forge/linux-64::libgfortran-ng==12.2.0=h69a702a_19 - conda-forge/linux-64::libgomp==12.2.0=h65d4601_19 - conda-forge/linux-64::_openmp_mutex==4.5=2_gnu - conda-forge/linux-64::libgcc-ng==12.2.0=h65d4601_19 - conda-forge/linux-64::bzip2==1.0.8=h7f98852_4 - conda-forge/linux-64::cudatoolkit==11.8.0=h37601d7_11 - conda-forge/linux-64::gmp==6.2.1=h58526e2_0 - conda-forge/linux-64::icu==70.1=h27087fc_0 - conda-forge/linux-64::libffi==3.4.2=h7f98852_5 - conda-forge/linux-64::libiconv==1.17=h166bdaf_0 - conda-forge/linux-64::libnsl==2.0.0=h7f98852_0 - conda-forge/linux-64::libopenblas==0.3.21=pthreads_h78a6416_3 - conda-forge/linux-64::libuuid==2.32.1=h7f98852_1000 - conda-forge/linux-64::libzlib==1.2.13=h166bdaf_4 - conda-forge/linux-64::ncurses==6.3=h27087fc_1 - conda-forge/linux-64::ocl-icd==2.3.1=h7f98852_0 - conda-forge/linux-64::openssl==3.0.8=h0b41bf4_0 - conda-forge/linux-64::xz==5.2.6=h166bdaf_0 - conda-forge/linux-64::libblas==3.9.0=16_linux64_openblas - conda-forge/linux-64::libprotobuf==3.21.12=h3eb15da_0 - conda-forge/linux-64::libsqlite==3.40.0=h753d276_0 - conda-forge/linux-64::libxml2==2.10.3=h7463322_0 - conda-forge/linux-64::mpfr==4.1.0=h9202a9a_1 - conda-forge/linux-64::ocl-icd-system==1.0.0=1 - conda-forge/linux-64::readline==8.1.2=h0f457ee_0 - conda-forge/linux-64::tk==8.6.12=h27826a3_0 - conda-forge/linux-64::libcblas==3.9.0=16_linux64_openblas - conda-forge/linux-64::liblapack==3.9.0=16_linux64_openblas - conda-forge/linux-64::libxslt==1.1.37=h873f0b0_0 - conda-forge/linux-64::mpc==1.3.1=hfe3b2da_0 - conda-forge/linux-64::python==3.10.9=he550d4f_0_cpython - conda-forge/noarch::boltons==21.0.0=pyhd8ed1ab_0 - conda-forge/noarch::certifi==2022.12.7=pyhd8ed1ab_0 - conda-forge/noarch::charset-normalizer==2.1.1=pyhd8ed1ab_0 - conda-forge/noarch::ele==0.2.0=pyhd8ed1ab_0 - conda-forge/linux-64::gmpy2==2.1.2=py310h3ec546c_1 - conda-forge/noarch::idna==3.4=pyhd8ed1ab_0 - conda-forge/noarch::lark-parser==0.12.0=pyhd8ed1ab_0 - conda-forge/linux-64::lxml==4.9.2=py310hbdc0903_0 - conda-forge/noarch::mpmath==1.2.1=pyhd8ed1ab_0 - conda-forge/noarch::networkx==3.0=pyhd8ed1ab_0 - conda-forge/linux-64::numpy==1.24.2=py310h8deb116_0 - conda-forge/noarch::pycparser==2.21=pyhd8ed1ab_0 - conda-forge/noarch::pysocks==1.7.1=pyha2e5f31_6 - conda-forge/noarch::pytz==2022.7.1=pyhd8ed1ab_0 - conda-forge/noarch::setuptools==67.1.0=pyhd8ed1ab_0 - conda-forge/noarch::six==1.16.0=pyh6c4a22f_0 - conda-forge/noarch::typing_extensions==4.4.0=pyha770c72_0 - conda-forge/noarch::wheel==0.38.4=pyhd8ed1ab_0 - conda-forge/linux-64::cffi==1.15.1=py310h255011f_3 - conda-forge/linux-64::openmm==8.0.0=py310h5728c26_0 - conda-forge/noarch::pip==23.0=pyhd8ed1ab_0 - conda-forge/linux-64::protobuf==4.21.12=py310heca2aa9_0 - conda-forge/noarch::python-dateutil==2.8.2=pyhd8ed1ab_0 - conda-forge/linux-64::sympy==1.11.1=py310hff52083_2 - conda-forge/noarch::typing-extensions==4.4.0=hd8ed1ab_0 - conda-forge/linux-64::brotlipy==0.7.0=py310h5764c6d_1005 - conda-forge/linux-64::cryptography==39.0.1=py310h34c0648_0 - conda-forge/linux-64::pandas==1.5.3=py310h9b08913_0 - conda-forge/linux-64::pydantic==1.8.2=py310h6acc77f_2 - conda-forge/noarch::unyt==2.8.0=py_0 - conda-forge/linux-64::parmed==4.0.0=py310heca2aa9_0 - conda-forge/noarch::pyopenssl==23.0.0=pyhd8ed1ab_0 - conda-forge/noarch::urllib3==1.26.14=pyhd8ed1ab_0 - conda-forge/noarch::requests==2.28.2=pyhd8ed1ab_0 - conda-forge/noarch::foyer==0.11.3=pyhd8ed1ab_0 - conda-forge/noarch::forcefield-utilities==0.2.1=pyhd8ed1ab_0 - conda-forge/noarch::gmso==0.9.1=pyhd8ed1ab_0 ```
daico007 commented 1 year ago

Hi @jaimergp, when I am constraining the pydantic<1.9, I am expecting conda to grab the latest version of pydantic that satisfy the requirement (which would be v1.8.2, which I would get using mamba, not v0.18.2), but please correct me if that's not the designed behavior. This discrepancy (between conda and mamba) also happened if I just install pydantic alone, so I can't really blame it's on the inter-dependency in the environment.yml.

jaimergp commented 1 year ago

@ipcoder - my results for the following input:

name: ipcoder
channels:
- conda-forge
- defaults
dependencies:
- python=3.9
- pytorch==1.10.2
- torchvision==0.11.3
- cudatoolkit=11.3

There are some differences in the MKL/openblas stack, but pytorch itself is indeed CPU in both.

libmamba ```shell $ CONDA_SUBDIR=linux-64 conda env create -f ipcoder.yaml --dry-run --solver=libmamba warning libmamba Could not parse mod/etag header warning libmamba Could not parse mod/etag header warning libmamba Could not parse mod/etag header pkgs/main/noarch No change pkgs/r/linux-64 No change pkgs/r/noarch No change pkgs/main/linux-64 5.2MB @ 2.5MB/s 2.7s conda-forge/noarch 11.2MB @ 3.5MB/s 4.3s conda-forge/linux-64 29.6MB @ 3.3MB/s 12.4s Collect all metadata (repodata.json): done Solving environment: done name: ipcoder channels: - conda-forge - defaults dependencies: - conda-forge/linux-64::_libgcc_mutex==0.1=conda_forge - conda-forge/linux-64::ca-certificates==2022.12.7=ha878542_0 - conda-forge/linux-64::ld_impl_linux-64==2.40=h41732ed_0 - conda-forge/linux-64::libstdcxx-ng==12.2.0=h46fd767_19 - conda-forge/linux-64::python_abi==3.9=3_cp39 - conda-forge/noarch::tzdata==2022g=h191b570_0 - conda-forge/linux-64::libgomp==12.2.0=h65d4601_19 - conda-forge/linux-64::_openmp_mutex==4.5=2_gnu - conda-forge/linux-64::libgcc-ng==12.2.0=h65d4601_19 - conda-forge/linux-64::bzip2==1.0.8=h7f98852_4 - conda-forge/linux-64::cudatoolkit==11.3.1=h9edb442_11 - conda-forge/linux-64::gmp==6.2.1=h58526e2_0 - conda-forge/linux-64::jpeg==9e=h166bdaf_2 - conda-forge/linux-64::lame==3.100=h166bdaf_1003 - conda-forge/linux-64::lerc==4.0.0=h27087fc_0 - conda-forge/linux-64::libdeflate==1.17=h0b41bf4_0 - conda-forge/linux-64::libffi==3.4.2=h7f98852_5 - conda-forge/linux-64::libnsl==2.0.0=h7f98852_0 - conda-forge/linux-64::libuuid==2.32.1=h7f98852_1000 - conda-forge/linux-64::libwebp-base==1.2.4=h166bdaf_0 - conda-forge/linux-64::libzlib==1.2.13=h166bdaf_4 - conda-forge/linux-64::ncurses==6.3=h27087fc_1 - conda-forge/linux-64::nettle==3.6=he412f7d_0 - conda-forge/linux-64::ninja==1.11.0=h924138e_0 - conda-forge/linux-64::openssl==3.0.8=h0b41bf4_0 - conda-forge/linux-64::pthread-stubs==0.4=h36c2ea0_1001 - conda-forge/linux-64::sleef==3.5.1=h9b69904_2 - conda-forge/linux-64::x264==1!161.3030=h7f98852_1 - conda-forge/linux-64::xorg-libxau==1.0.9=h7f98852_0 - conda-forge/linux-64::xorg-libxdmcp==1.1.3=h7f98852_0 - conda-forge/linux-64::xz==5.2.6=h166bdaf_0 - conda-forge/linux-64::gnutls==3.6.13=h85f3911_1 - conda-forge/linux-64::libpng==1.6.39=h753d276_0 - conda-forge/linux-64::libsqlite==3.40.0=h753d276_0 - conda-forge/linux-64::libxcb==1.13=h7f98852_1004 - conda-forge/linux-64::readline==8.1.2=h0f457ee_0 - conda-forge/linux-64::tk==8.6.12=h27826a3_0 - conda-forge/linux-64::zlib==1.2.13=h166bdaf_4 - conda-forge/linux-64::zstd==1.5.2=h3eb15da_6 - conda-forge/linux-64::freetype==2.12.1=hca18f0e_1 - defaults/linux-64::intel-openmp==2022.1.0=h9e868ea_3769 - conda-forge/linux-64::libprotobuf==3.19.4=h780b84a_0 - conda-forge/linux-64::libtiff==4.5.0=h6adf6a1_2 - conda-forge/linux-64::openh264==2.1.1=h780b84a_0 - conda-forge/linux-64::python==3.9.16=h2782a2a_0_cpython - conda-forge/linux-64::ffmpeg==4.3.2=h37c90e5_3 - conda-forge/noarch::future==0.18.3=pyhd8ed1ab_0 - conda-forge/linux-64::lcms2==2.14=hfd0df8a_1 - defaults/linux-64::mkl==2022.1.0=hc2b9512_224 - conda-forge/linux-64::openjpeg==2.5.0=hfec8fc6_2 - conda-forge/noarch::pycparser==2.21=pyhd8ed1ab_0 - conda-forge/linux-64::setuptools==59.5.0=py39hf3d152e_0 - conda-forge/noarch::typing_extensions==4.4.0=pyha770c72_0 - conda-forge/noarch::wheel==0.38.4=pyhd8ed1ab_0 - conda-forge/linux-64::cffi==1.15.1=py39he91dace_3 - conda-forge/linux-64::libblas==3.9.0=16_linux64_mkl - conda-forge/linux-64::pillow==9.4.0=py39h2320bf1_1 - conda-forge/noarch::pip==23.0=pyhd8ed1ab_0 - conda-forge/linux-64::libcblas==3.9.0=16_linux64_mkl - conda-forge/linux-64::liblapack==3.9.0=16_linux64_mkl - conda-forge/linux-64::numpy==1.24.2=py39h7360e5f_0 - conda-forge/linux-64::pytorch==1.10.2=cpu_py39h5e9ed0b_1 - conda-forge/linux-64::torchvision==0.11.3=cpu_py39hfc47f1b_2 ```
classic ```shell $ CONDA_SUBDIR=linux-64 conda env create -f ipcoder.yaml --dry-run Collecting package metadata (repodata.json): done Solving environment: done name: ipcoder channels: - conda-forge - defaults dependencies: - conda-forge/linux-64::_libgcc_mutex==0.1=conda_forge - conda-forge/linux-64::ca-certificates==2022.12.7=ha878542_0 - conda-forge/linux-64::ld_impl_linux-64==2.40=h41732ed_0 - conda-forge/linux-64::libstdcxx-ng==12.2.0=h46fd767_19 - conda-forge/linux-64::python_abi==3.9=3_cp39 - conda-forge/noarch::tzdata==2022g=h191b570_0 - conda-forge/linux-64::_openmp_mutex==4.5=2_kmp_llvm - conda-forge/linux-64::libgcc-ng==12.2.0=h65d4601_19 - conda-forge/linux-64::bzip2==1.0.8=h7f98852_4 - conda-forge/linux-64::cudatoolkit==11.3.1=h9edb442_11 - conda-forge/linux-64::gmp==6.2.1=h58526e2_0 - conda-forge/linux-64::icu==70.1=h27087fc_0 - conda-forge/linux-64::jpeg==9e=h166bdaf_2 - conda-forge/linux-64::lame==3.100=h166bdaf_1003 - conda-forge/linux-64::lerc==4.0.0=h27087fc_0 - conda-forge/linux-64::libdeflate==1.17=h0b41bf4_0 - conda-forge/linux-64::libffi==3.4.2=h7f98852_5 - conda-forge/linux-64::libiconv==1.17=h166bdaf_0 - conda-forge/linux-64::libnsl==2.0.0=h7f98852_0 - conda-forge/linux-64::libuuid==2.32.1=h7f98852_1000 - conda-forge/linux-64::libwebp-base==1.2.4=h166bdaf_0 - conda-forge/linux-64::libzlib==1.2.13=h166bdaf_4 - conda-forge/linux-64::ncurses==6.3=h27087fc_1 - conda-forge/linux-64::nettle==3.6=he412f7d_0 - conda-forge/linux-64::ninja==1.11.0=h924138e_0 - conda-forge/linux-64::openssl==3.0.8=h0b41bf4_0 - conda-forge/linux-64::pthread-stubs==0.4=h36c2ea0_1001 - conda-forge/linux-64::sleef==3.5.1=h9b69904_2 - conda-forge/linux-64::x264==1!161.3030=h7f98852_1 - conda-forge/linux-64::xorg-libxau==1.0.9=h7f98852_0 - conda-forge/linux-64::xorg-libxdmcp==1.1.3=h7f98852_0 - conda-forge/linux-64::xz==5.2.6=h166bdaf_0 - conda-forge/linux-64::gnutls==3.6.13=h85f3911_1 - conda-forge/linux-64::libpng==1.6.39=h753d276_0 - conda-forge/linux-64::libsqlite==3.40.0=h753d276_0 - conda-forge/linux-64::libxcb==1.13=h7f98852_1004 - conda-forge/linux-64::libxml2==2.10.3=h7463322_0 - conda-forge/linux-64::llvm-openmp==15.0.7=h0cdce71_0 - conda-forge/linux-64::readline==8.1.2=h0f457ee_0 - conda-forge/linux-64::tk==8.6.12=h27826a3_0 - conda-forge/linux-64::zlib==1.2.13=h166bdaf_4 - conda-forge/linux-64::zstd==1.5.2=h3eb15da_6 - conda-forge/linux-64::freetype==2.12.1=hca18f0e_1 - conda-forge/linux-64::libhwloc==2.8.0=h32351e8_1 - conda-forge/linux-64::libprotobuf==3.19.4=h780b84a_0 - conda-forge/linux-64::libtiff==4.5.0=h6adf6a1_2 - conda-forge/linux-64::openh264==2.1.1=h780b84a_0 - conda-forge/linux-64::python==3.9.16=h2782a2a_0_cpython - conda-forge/linux-64::ffmpeg==4.3.2=h37c90e5_3 - conda-forge/noarch::future==0.18.3=pyhd8ed1ab_0 - conda-forge/linux-64::lcms2==2.14=hfd0df8a_1 - conda-forge/linux-64::openjpeg==2.5.0=hfec8fc6_2 - conda-forge/noarch::pycparser==2.21=pyhd8ed1ab_0 - conda-forge/linux-64::setuptools==59.5.0=py39hf3d152e_0 - conda-forge/linux-64::tbb==2021.7.0=h924138e_1 - conda-forge/noarch::typing_extensions==4.4.0=pyha770c72_0 - conda-forge/noarch::wheel==0.38.4=pyhd8ed1ab_0 - conda-forge/linux-64::cffi==1.15.1=py39he91dace_3 - conda-forge/linux-64::mkl==2022.2.1=h84fe81f_16997 - conda-forge/linux-64::pillow==9.4.0=py39h2320bf1_1 - conda-forge/noarch::pip==23.0=pyhd8ed1ab_0 - conda-forge/linux-64::libblas==3.9.0=16_linux64_mkl - conda-forge/linux-64::libcblas==3.9.0=16_linux64_mkl - conda-forge/linux-64::liblapack==3.9.0=16_linux64_mkl - conda-forge/linux-64::numpy==1.24.2=py39h7360e5f_0 - conda-forge/linux-64::pytorch==1.10.2=cpu_py39h5e9ed0b_1 - conda-forge/linux-64::torchvision==0.11.3=cpu_py39h955d6d4_2 ```
jaimergp commented 1 year ago

Hi jaimergp, when I am constraining the pydantic<1.9, I am expecting conda to grab the latest version of pydantic that satisfy the requirement (which would be v1.8.2, which I would get using mamba, not v0.18.2), but please correct me if that's not the designed behavior. This discrepancy (between conda and mamba) also happened if I just install pydantic alone, so I can't really blame it's on the inter-dependency in the environment.yml.

Wow you are right @daico007. I saw 1-8-2 in both and then omitted the 0. I updated my above comment, sorry! We'll look into it.

jaimergp commented 1 year ago

Hi @daico007, I have looked a bit further into your reproducer. I just realized you are not specifying any particular python version, so libsolv has to try all of them. In that backtracking process, it will try to select pydantic 1.8.2 for Python 3.11, which doesn't exist, and this will trigger a cascade of alternative searches that concludes that the pydantic 0.8.2 does work with Python 3.11 (because it's noarch and its repodata has an open-ended upper bound), before trying Python 3.10 and Pydantic 1.8.2.

IOW, libsolv cannot anticipate that you'd prefer a more recent pydantic over a more recent python, so it prioritizes getting python 3.11 over getting pydantic 1.8.2.

If you specify any Python version, you do get 1.8.2. This works even with python <3.11.

More details: