Ошибка Conda UnsatisfiableError, даже когда, казалось бы, нет никакого конфликта

#python #conda #apple-m1 #conda-forge #mini-forge

Вопрос:

Например, у меня есть следующий environment.yml файл

 name: harmonic-backend
channels:
  - conda-forge
dependencies:
  - python==3.8.10
  - apache-beam==2.31.0
  - pyarrow==4.0.1

prefix: /opt/homebrew/Caskroom/miniforge/base/envs/harmonic-backend
 

И ниже приведен результат, когда я пытаюсь соответствующим образом создать среду

 sumit@Sumits-MacBook-Air backend % conda env create
Collecting package metadata (repodata.json): done
Solving environment: -
Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.
failed
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

Package python conflicts for:
apache-beam==2.31.0 -> crcmod[version='>=1.7,<2.0'] -> python[version='3.8.*|>=2.7|>=3|>=3.6|>=3.9,<3.10.0a0']
python==3.8.10
apache-beam==2.31.0 -> python[version='>=3.8,<3.9.0a0']

Package pyarrow conflicts for:
apache-beam==2.31.0 -> pyarrow[version='>=0.15.1,<5.0.0']
pyarrow==4.0.1

Package setuptools conflicts for:
python==3.8.10 -> pip -> setuptools
apache-beam==2.31.0 -> grpcio[version='>=1.29.0,<2'] -> setuptools

Package ncurses conflicts for:
pyarrow==4.0.1 -> python[version='>=3.9,<3.10.0a0'] -> ncurses[version='>=6.2,<6.3.0a0']
python==3.8.10 -> readline[version='>=8.1,<9.0a0'] -> ncurses[version='>=6.2,<6.3.0a0']
 

Просматривая выходные данные, я не могу найти никакого конфликта. Что здесь происходит и как мне это решить?

Для большего контекста я использую miniforge installed using brew на mac M1.

Комментарии:

1. Насколько важно, чтобы у вас были именно эти версии каждого пакета?

2. @MattThompson из моего анализа, ослабление версий не помогло бы. Все apache-beam сборки для платформы osx-arm64 зависят от dill >=0.3.1.1,<0.3.2 , но такого пакета нет.

Ответ №1:

Исправлено

Теперь это работает благодаря усилиям одного из сопровождающих apache-beam-feedstock (см. Выпуск).

Для дальнейшего использования, когда такие сбои наблюдаются, пожалуйста, сообщите о них сопровождающим исходного сырья Conda Forge. Многие сборки для osx-arm64 скомпилированы и упакованы, но для их тестирования не настроена какая-либо инфраструктура CI. Следовательно, разработчики зависят от конечных пользователей в сообществе, поднимающих им вопросы, когда они возникают на собственном оборудовании osx-arm64.

В противном случае, если исправления не будут реализованы немедленно, пользователям Apple Silicon следует рассмотреть контейнерное решение (например, Docker), которое не использует платформу osx-arm64. Или используйте Rosetta для эмуляции платформы osx-64.


Анализ сбоя (устарел)

Мамба дает более интерпретируемый результат (при условии, что вы используете собственную платформу osx-arm64):

 $ CONDA_SUBDIR=osx-arm64 mamba create -n foo python=3.8.10 apache-beam=2.31.0 pyarrow=4.0.1

                  __    __    __    __
                 /    /    /    /  
                /    /    /    /    
███████████████/  /██/  /██/  /██/  /████████████████████████
              /  /    /    /    /   ____
             /  /   _/   _/   _/       o __,
            / _/                       _____/  `
            |/
        ███╗   ███╗ █████╗ ███╗   ███╗██████╗  █████╗
        ████╗ ████║██╔══██╗████╗ ████║██╔══██╗██╔══██╗
        ██╔████╔██║███████║██╔████╔██║██████╔╝███████║
        ██║╚██╔╝██║██╔══██║██║╚██╔╝██║██╔══██╗██╔══██║
        ██║ ╚═╝ ██║██║  ██║██║ ╚═╝ ██║██████╔╝██║  ██║
        ╚═╝     ╚═╝╚═╝  ╚═╝╚═╝     ╚═╝╚═════╝ ╚═╝  ╚═╝

        mamba (0.16.0) supported by @QuantStack

        GitHub:  https://github.com/mamba-org/mamba
        Twitter: https://twitter.com/QuantStack

█████████████████████████████████████████████████████████████


Looking for: ['python=3.8.10', 'apache-beam=2.31.0', 'pyarrow=4.0.1']

conda-forge/noarch       Using cache
bioconda/noarch          Using cache
pkgs/main/noarch         [====================] (00m:00s) No change
pkgs/r/osx-arm64         [====================] (00m:00s) 404 Failed
pkgs/r/noarch            [====================] (00m:00s) No change
pkgs/main/osx-arm64      [====================] (00m:00s) Done
bioconda/osx-arm64       [====================] (00m:00s) 404 Failed
conda-forge/osx-arm64    [====================] (00m:00s) Done
Encountered problems while solving:
  - nothing provides dill >=0.3.1.1,<0.3.2 needed by apache-beam-2.31.0-py38hea4295b_0
 

А именно, dill пакет, который apache-beam=2.31.0 требуется, недоступен для платформы osx-arm64. Основная проблема заключается в том, что dill для сборки пакета не требуется apache-beam , а поскольку Azure не предоставляет собственные образы M1, конвейер Conda Forge никогда не проверяет, действительно ли сборки osx-arm64 можно установить (!).