ResolvePackageNotFound: создать env, используя conda и yml файл в MacOS

Я хочу создать виртуальную среду, используя conda и yml файл.

Команда:

conda env create -n ex3 -f env.yml

Введите "ВВОД", введите следующее сообщение:

ResolvePackageNotFound:

 - gst-plugins-base==1.8.0=0
 - dbus==1.10.20=0
 - opencv3==3.2.0=np111py35_0
 - qt==5.6.2=5
 - libxcb==1.12=1
 - libgcc==5.2.0=0
 - gstreamer==1.8.0=0

Тем не менее, у меня есть те на моем Mac. Мой MacOS: High Sierra 10.13.3

Мой файл env.yml выглядит так:

name: ex3
channels:
- menpo
- defaults
dependencies:
- cairo=1.14.8=0
- certifi=2016.2.28=py35_0
- cycler=0.10.0=py35_0
- dbus=1.10.20=0
- expat=2.1.0=0
- fontconfig=2.12.1=3
- freetype=2.5.5=2
- glib=2.50.2=1
- gst-plugins-base=1.8.0=0
- gstreamer=1.8.0=0
- harfbuzz=0.9.39=2
- hdf5=1.8.17=2
- icu=54.1=0
- jbig=2.1=0
- jpeg=9b=0
- libffi=3.2.1=1
- libgcc=5.2.0=0
- libgfortran=3.0.0=1
- libiconv=1.14=0
- libpng=1.6.30=1
- libtiff=4.0.6=3
- libxcb=1.12=1
- libxml2=2.9.4=0
- matplotlib=2.0.2=np111py35_0
- mkl=2017.0.3=0
- numpy=1.11.3=py35_0
- openssl=1.0.2l=0
- pandas=0.20.1=np111py35_0
- patsy=0.4.1=py35_0
- pcre=8.39=1
- pip=9.0.1=py35_1
- pixman=0.34.0=0
- pyparsing=2.2.0=py35_0
- pyqt=5.6.0=py35_2
- python=3.5.4=0
- python-dateutil=2.6.1=py35_0
- pytz=2017.2=py35_0
- qt=5.6.2=5
- readline=6.2=2
- scipy=0.19.0=np111py35_0
- seaborn=0.8=py35_0
- setuptools=36.4.0=py35_1
- sip=4.18=py35_0
- six=1.10.0=py35_0
- sqlite=3.13.0=0
- statsmodels=0.8.0=np111py35_0
- tk=8.5.18=0
- wheel=0.29.0=py35_0
- xz=5.2.3=0
- zlib=1.2.11=0
- opencv3=3.2.0=np111py35_0
- pip:
  - bleach==1.5.0
  - enum34==1.1.6
  - html5lib==0.9999999
  - markdown==2.6.11
  - protobuf==3.5.1
  - tensorflow==1.4.1
  - tensorflow-tensorboard==0.4.0
  - werkzeug==0.14.1

Как решить эту проблему?

Ну... Переполнение стека подсказывает мне больше подробностей, но я думаю, что я четко описываю вещи, это печально, переполнение стека не поддерживает загрузку приложения....

Ответ 1

У меня была та же проблема, и я нашел твой вопрос на поиске.

Ошибка ResolvePackageNotFound описывает все пакеты, которые еще не установлены, но необходимы.

Чтобы решить проблему, переместите их в раздел pip:

name: ex3
channels:
- menpo
- defaults
dependencies:
  - cairo=1.14.8=0
  - ***
  - another dependencies, except not found ones
  - pip:
    - gst-plugins-base==1.8.0                
    - bleach==1.5.0
    - enum34==1.1.6
    - html5lib==0.9999999
    - markdown==2.6.11
    - protobuf==3.5.1
    - tensorflow==1.4.1
    - tensorflow-tensorboard==0.4.0
    - werkzeug==0.14.1
    *** added ***
    - gst-plugins-base==1.8.0
    - dbus==1.10.20
    - opencv3==3.2.0
    - qt==5.6.2
    - libxcb==1.12
    - libgcc==5.2.0
    - gstreamer==1.8.0

Ответ 2

У меня есть среда, сохраненная на моем компьютере с Ubuntu 18, и я попытался загрузить среду на мой компьютер с Windows 10 и получил проблему с зависимостями. Я сделал то, что было предложено поставить все под мерзость, и это не сработало для меня.

Ответ 3

Если вы смотрите на это и чувствуете, что слишком много рутины, чтобы изменить версию Conda packge=ver=py.* в стиле pip package==ver, я написал этот небольшой скрипт, который удаляет часть =py.* из стиля Conda.

Обратите внимание, что приведенный ниже код работает при условии, что вы уже изменили package=ver на package==ver.

#!/bin/bash

COUNT=0
find_pip=0

while IFS= read -r line; do
    COUNT=$(( $COUNT + 1 ))
#    echo "$COUNT"
#    echo "read it"
    if echo ${line} | grep -q -- "- pip:" ; then
#        echo "find it"
        find_pip=1
        indent='awk -F- '{print length($1)}' <<< "$line"'
        pip_indent=$(( $indent + 2 ))
#        echo $indent
#    echo $pip_indent
    fi

    line_indent='awk -F- '{print length($1)}' <<< "$line"'

    if [[ ${find_pip} ]] && [[ ${pip_indent} -eq ${line_indent} ]]; then
#        echo "$line"
        new_line='echo ${line} | cut -d'=' -f-3'
        new_line="    $new_line"
#        echo "${new_line}"
        sed -e "${COUNT}s/.*/${new_line}/" -i '' $1
    fi
done < "$1"

Ответ 4

Я получил ту же проблему и обнаружил проблему с GitHub, связанную с этим. В комментариях @kalefranz опубликовал идеальное решение, используя флаг --no-builds с экспортом conda env.

conda env export --no-builds > environment.yml

Однако даже при удалении номеров сборок некоторые пакеты могут иметь разные номера версий в разных ОС. На мой взгляд, лучший способ - создать разные env yml файлы для разных ОС.

Надеюсь это поможет.