yamlconda

PackagesNotFoundError while creating Conda environment from YAML


I am trying to run commands from a python application from the windows PowerShell. I tried to follow the tutorial to setup the environment as outlined in the GitHub page but I run into issues with a "PackagesNotFoundError" and many packages are missing.

The command that gives the error is: $ conda env create -f environment.yml

This is the error message I get.

PackagesNotFoundError: The following packages are not available from current channels:

  - zlib==1.2.13=h5eee18b_0
  - xz==5.4.2=h5eee18b_0
  - wheel==0.38.4=py39h06a4308_0
  - tk==8.6.12=h1ccaba5_0
  - sqlite==3.41.2=h5eee18b_0
  - setuptools==68.0.0=py39h06a4308_0
  - readline==8.2=h5eee18b_0
  - python==3.9.16=h955ad1f_3
  - pip==23.2.1=py39h06a4308_0
  - openssl==3.0.10=h7f8727e_0
  - ncurses==6.4=h6a678d5_0
  - libstdcxx-ng==11.2.0=h1234567_1
  - libgomp==11.2.0=h1234567_1
  - libgcc-ng==11.2.0=h1234567_1
  - libffi==3.4.4=h6a678d5_0
  - ld_impl_linux-64==2.38=h1181459_1
  - ca-certificates==2023.05.30=h06a4308_0
  - _openmp_mutex==5.1=1_gnu

Current channels:

  - https://repo.anaconda.com/pkgs/main/win-64
  - https://repo.anaconda.com/pkgs/r/win-64
  - https://repo.anaconda.com/pkgs/msys2/win-64
  - https://conda.anaconda.org/conda-forge/win-64
  - https://repo.anaconda.com/pkgs/free/win-64
  - https://repo.anaconda.com/pkgs/pro/win-64

To search for alternate channels that may provide the conda package you're
looking for, navigate to

    https://anaconda.org

and use the search bar at the top of the page.

Finally this is the .yml file to set up the environment.

name: automoldesigner
channels:
  - defaults
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2023.05.30=h06a4308_0
  - ld_impl_linux-64=2.38=h1181459_1
  - libffi=3.4.4=h6a678d5_0
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.10=h7f8727e_0
  - pip=23.2.1=py39h06a4308_0
  - python=3.9.16=h955ad1f_3
  - readline=8.2=h5eee18b_0
  - setuptools=68.0.0=py39h06a4308_0
  - sqlite=3.41.2=h5eee18b_0
  - tk=8.6.12=h1ccaba5_0
  - tzdata=2023c=h04d1e81_0
  - wheel=0.38.4=py39h06a4308_0
  - xz=5.4.2=h5eee18b_0
  - zlib=1.2.13=h5eee18b_0
  - pip:
    - aiohttp==3.8.5
    - aiohttp-cors==0.7.0
    - aiosignal==1.3.1
    - async-timeout==4.0.3
    - attrs==23.1.0
    - autogluon-common==0.8.2
    - autogluon-core==0.8.2
    - autogluon-features==0.8.2
    - autogluon-tabular==0.8.2
    - blessed==1.20.0
    - blis==0.7.10
    - boto3==1.28.30
    - botocore==1.31.30
    - cachetools==5.3.1
    - catalogue==2.0.9
    - catboost==1.2
    - certifi==2023.7.22
    - charset-normalizer==3.2.0
    - click==8.1.7
    - cloudpickle==2.2.1
    - colorful==0.5.5
    - confection==0.1.1
    - contourpy==1.1.0
    - cycler==0.11.0
    - cymem==2.0.7
    - descriptastorus==2.6.1
    - dimorphite-dl==1.3.2
    - distlib==0.3.7
    - fastai==2.7.12
    - fastcore==1.5.29
    - fastdownload==0.0.7
    - fastprogress==1.0.3
    - filelock==3.12.2
    - fonttools==4.42.1
    - frozenlist==1.4.0
    - future==0.18.3
    - google-api-core==2.11.1
    - google-auth==2.22.0
    - googleapis-common-protos==1.60.0
    - gpustat==1.1
    - grpcio==1.50.0
    - hyperopt==0.2.7
    - idna==3.4
    - importlib-resources==6.0.1
    - jinja2==3.1.2
    - jmespath==1.0.1
    - joblib==1.3.2
    - jsonschema==4.19.0
    - jsonschema-specifications==2023.7.1
    - kiwisolver==1.4.4
    - langcodes==3.3.0
    - lightgbm==3.3.5
    - markupsafe==2.1.3
    - matplotlib==3.7.2
    - molvs==0.1.1
    - msgpack==1.0.5
    - multidict==6.0.4
    - murmurhash==1.0.9
    - networkx==3.1
    - numpy==1.25.2
    - nvidia-cublas-cu11==11.10.3.66
    - nvidia-cuda-nvrtc-cu11==11.7.99
    - nvidia-cuda-runtime-cu11==11.7.99
    - nvidia-cudnn-cu11==8.5.0.96
    - nvidia-ml-py==12.535.77
    - opencensus==0.11.2
    - opencensus-context==0.1.3
    - packaging==23.1
    - pandas==1.5.3
    - pandas-flavor==0.6.0
    - pathy==0.10.2
    - pillow==10.0.0
    - platformdirs==3.10.0
    - plotly==5.16.1
    - preshed==3.0.8
    - prometheus-client==0.17.1
    - protobuf==4.24.1
    - psutil==5.9.5
    - py-spy==0.3.14
    - py4j==0.10.9.7
    - pyasn1==0.5.0
    - pyasn1-modules==0.3.0
    - pydantic==1.10.12
    - pyparsing==3.0.9
    - pyside6==6.5.2
    - pyside6-addons==6.5.2
    - pyside6-essentials==6.5.2
    - python-dateutil==2.8.2
    - python-graphviz==0.20.1
    - pytz==2023.3
    - pyyaml==6.0.1
    - ray==2.3.1
    - rdkit==2023.3.3
    - referencing==0.30.2
    - requests==2.31.0
    - rpds-py==0.9.2
    - rsa==4.9
    - s3transfer==0.6.2
    - scikit-learn==1.2.2
    - scipy==1.11.2
    - shiboken6==6.5.2
    - six==1.16.0
    - smart-open==6.3.0
    - spacy==3.6.1
    - spacy-legacy==3.0.12
    - spacy-loggers==1.0.4
    - srsly==2.4.7
    - tabulate==0.9.0
    - tenacity==8.2.3
    - tensorboardx==2.6.2.2
    - thinc==8.1.12
    - threadpoolctl==3.2.0
    - torch==1.13.1
    - torchvision==0.14.1
    - tqdm==4.66.1
    - typer==0.9.0
    - typing-extensions==4.7.1
    - urllib3==1.26.16
    - virtualenv==20.24.3
    - wasabi==1.1.2
    - wcwidth==0.2.6
    - xarray==2023.8.0
    - xgboost==1.7.6
    - yarl==1.9.2
    - zipp==3.16.2

I checked the channels and packages and I found versions of all the packages within the available channels. However, I am not sure if there are different file versions that are available elsewhere from different packages.

I also tried to change the subdirectory to make sure conda used the windows version of the files but I got the same result. conda config --env --set subdir win-64

Additionally, I also added the conda-forge/broken/label channel but that yielded the same results. I also went and switched the environment.yml file to have asterixs after every number but that did not work either.


Solution

  • the authors of that package did not do a good job in providing a portable environment yml file:

    1. The build strings (like =h06a4308_0) are platform dependent and specific to a very particular build, so unless you have the same operating system as the person creating that file and no package maintainer has repackaged their packages giving them new build strings since, you will generally not be able to recreate such an environment out of the box.

    2. There are requirements like ncurses that are simply not available on windows (see the platform tags, only listing linux and macos)

    I am fairly certain that the developers of the program did not actually mean that their software runs only if you recreate this very exact env, but they also did not put muche effort into portability. They are also not very specific on the requirements in the README:

    Basic requirements are Python>=3.8, pytorch>=1.13.1 and autogluon>=0.8.2, other packages including rdkit, molvs, descriptastorus, dimorphite-dl, openpyxl and so on.

    You should create an issue on their github, asking them for a yml file that only contains the actual packages that they depend on with version requirements.

    In the meantime, if I were you, you can start with a minimal version of the yml file, create the env, try to run the software, identify missing requirements, add them to the yml file, recreate the env, .... repeat until success. A good starting point can be the requirements that they have posted:

    name: automoldesigner
    channels:
      - defaults
      - pytorch
      - nvidia
    dependencies:
      - python=3.9.16
      - pytorch==1.13.1
      - torchvision==0.14.1
      - torchaudio==0.13.1
      - pytorch-cuda=11.6
      - pip:
        - autogluon==0.8.2
        - rdkit==2023.3.3
        - molvs==0.1.1
        - descriptastorus==2.6.1
        - dimorphite-dl==1.3.2
        - openpyxl