Я создал среду conda из новой установки miniconda3.
После этого я экспортировал его, и вот содержимое файла (моей единственной дополнительной установкой была фляга):
name: myenv
channels:
- defaults
dependencies:
- ca-certificates=2018.03.07=0
- certifi=2018.11.29=py37_0
- click=7.0=py37_0
- flask=1.0.2=py37_1
- itsdangerous=1.1.0=py37_0
- jinja2=2.10=py37_0
- libcxx=4.0.1=hcfea43d_1
- libcxxabi=4.0.1=hcfea43d_1
- libedit=3.1.20170329=hb402a30_2
- libffi=3.2.1=h475c297_4
- markupsafe=1.1.0=py37h1de35cc_0
- ncurses=6.1=h0a44026_1
- openssl=1.1.1a=h1de35cc_0
- pip=18.1=py37_0
- python=3.7.1=haf84260_7
- readline=7.0=h1de35cc_5
- setuptools=40.6.2=py37_0
- sqlite=3.26.0=ha441bb4_0
- tk=8.6.8=ha441bb4_0
- werkzeug=0.14.1=py37_0
- wheel=0.32.3=py37_0
- xz=5.2.4=h1de35cc_4
- zlib=1.2.11=h1de35cc_3
prefix: /Users/rossid/miniconda3/envs/phadmin
теперь я хочу воссоздать эту среду в образе документа, поэтому я создал этот Dockefile
FROM continuumio/miniconda3
ADD * myappdir/
RUN conda env create -f /myappdir/environment.yml
но это не сработает:
Step 1/5 : FROM continuumio/miniconda3
---> d3c252f8727b
Step 2/5 : ADD * myappdir/
---> Using cache
---> 2afbf5ea75bd
Step 3/5 : RUN conda env create -f /myappdir/environment.yml
---> Running in 7f916bd46979
Solving environment: ...working... failed
ResolvePackageNotFound:
- tk==8.6.8=ha441bb4_0
- ncurses==6.1=h0a44026_1
- markupsafe==1.1.0=py37h1de35cc_0
- readline==7.0=h1de35cc_5
- zlib==1.2.11=h1de35cc_3
- openssl==1.1.1a=h1de35cc_0
- xz==5.2.4=h1de35cc_4
- libcxxabi==4.0.1=hcfea43d_1
- libcxx==4.0.1=hcfea43d_1
- libffi==3.2.1=h475c297_4
- sqlite==3.26.0=ha441bb4_0
- python==3.7.1=haf84260_7
- libedit==3.1.20170329=hb402a30_2
почему это происходит? Если я попытаюсь сделать то же самое, чтобы создать другую среду, это сработает. Если я удалю версию сборки, некоторые зависимости разрешатся (я имею в виду третью координату в зависимостях).
Пытался добавить больше каналов вроде conda-forge, но ничего.
Также мой файл .condarc пуст.
Кто-нибудь знает, как это исправить?
Это одна и та же ОС для создания файла environment.yml и образа Docker?
некоторые из этих библиотек зависят от платформы, например: libcxxabi и libcxx, они предназначены для OSX, но в Linux они недоступны. Некоторые из этих библиотек работают, только если я помещаю их в раздел PIP. Я хотел бы сделать environment.yml кроссплатформенным, но я не знаю, как ...
@ gotch4 Я не думаю, что файлы среды conda с кросс-платформенной совместимостью существуют в настоящее время, и это потому, что сама conda не является полностью кроссплатформенной. Поправьте меня, если я ошибаюсь, интернет.






У меня была похожая проблема, и я нашел несколько способов ее решить. Основная проблема с вашим подходом заключается в том, что conda не зависит от платформы, поэтому заставляет среды использовать pip.
1. Решение типа Conda
Измените свой my_env.yml так, чтобы все зависимости, кроме pip, находились под зависимостью pip. Обратите внимание, что синтаксис отличается, когда вы переходите под пункт.
Например:
name: myenv
channels:
- defaults
dependencies:
- pip=18.1
- pip:
- wheel==0.32.3
Затем перейдите в свой Dockerfile и добавьте следующую строку:
RUN conda env update -n base --file myenv.yml
2. Старый добрый Путь Пипа
Экспортируйте среду conda в файл требований pip как на этот ответ
conda install pip
pip freeze > requirements.txt
Затем перейдите в свой файл Docker и добавьте следующую строку:
RUN python -m pip install -r requirements.txt
возможно это может помочь, поскольку я уже сталкивался с подобной проблемой в прошлом. Вы можете удалить версию сборки и версию версии, хотя некоторые приложения могут работать по-другому, если установлена другая версия.