Я создаю образ докера, который использует conda (conda 4.5.10 и miniconda 4.5.4 установлены на базовом образе) для создания среды и установки некоторых пакетов.У меня возникла проблема, из-за которой после conda create
эта последующая команда docker завершается ошибкой:
RUN source /opt/conda/bin/activate /opt/conda/envs/python2 && \
pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir --upgrade -r /requirements_py2_pip.txt && \
rm /requirements_py2_pip.txt
Ошибка:
Шаг 12/17: RUN source / opt / conda /bin / activ / opt / conda / envs / python2 && pip install --no-cache-dir - обновить версию pip && pip install --no-cache-dir --upgrade -r /requirements_py2_pip.txt && rm /requirements_py2_pip.txt
---> Работает в e828112b4ae0.Не удалось найти независимые от платформы библиотеки
Не удалось найти зависимые от платформы библиотеки
Рассмотрите возможность установки $ PYTHONHOME в [:]
Неустранимая ошибка Python: Py_Initialize: невозможно получить кодировку языкового стандарта
ModuleNotFoundError: Нет модуля с именем 'encodings '
Текущий поток 0x00007fe6d4851700 (последний вызов сначала):
Команда' / bin / bash -c source / opt / conda / bin / activ / opt / conda / envs / python2 && pip install --no-cache-dir - обновить pip && pip install --no-cache-dir --upgrade -r /requirements_py2_pip.txt && rm /requirements_py2_pip.txt 'вернул ненулевой код: 134
Тот факт, что это время от времени терпит неудачу, действительно беспокоит меня, если он терпит неудачу каждый раз, когда я не возражаю против этого, но он терпит неудачу примерно в 50% случаев.Я погуглил и нашел этот SO поток: ImportError: Нет модуля с именем 'encodings' , который бы предполагал, что это может быть проблемой со средами conda.Следовательно, я добавил эту команду докера до той, которая периодически переставала работать:
RUN conda env list
досадно , что команда также периодически прерывается.При успешном завершении возвращается:
Шаг 12/18: RUN conda env list
---> Работа в 05eaa6f726a9
# conda Environment:
#
base */ opt / conda
python3 / opt / conda / envs / python3
python3.6 /opt/conda/envs/python3.6
При сбое возвращается:
Шаг 12/18: RUN conda env list
---> Работает в 20247acc3824
Не удалось найти независимые от платформы библиотеки
Не удалось найти зависимые от платформы библиотеки
Рассмотрите возможность установки $ PYTHONHOMEto [:]
Неустранимая ошибка Python: Py_Initialize: невозможно получить кодировку языкового стандарта
ModuleNotFoundError: Нет модуля с именем 'encodings'
Текущий поток 0x00007f7a5f5ef700 (самый последний вызов в первую очередь):
Команда '/bin / bash -c conda env list 'вернул ненулевой код: 139
, что, как вы увидите, очень похоже на предыдущую ошибку.Это подсказало мне, что была проблема со средой conda, созданной с помощью этой команды:
# Create a Python 2.x environment using conda including at least the ipython kernel
# and the kernda utility. Add any additional packages you want available for use
# in a Python 2 notebook to the first line here (e.g., pandas, matplotlib, etc.)
RUN conda create --quiet --yes -p $CONDA_DIR/envs/python2 python=2.7 --file requirements_py2_conda.txt && \
source /opt/conda/bin/activate /opt/conda/envs/python2 && \
conda remove --quiet --yes --force qt pyqt && \
conda clean -tipsy && \
rm -rf $CONDA_DIR/envs/python2/share/jupyter/lab/staging && \
rm -rf /usr/local/share/.cache /tmp/* /opt/conda/pkgs/* /opt/conda/envs/python2/pkgs/* \
/requirements_py2_conda.txt /opt/conda/envs/python3/pkgs/*
Я сравнил вывод этой команды как при успешной, так и при неудачной сборке.Оба устанавливают одинаковые пакеты, просто они устанавливаются в другом порядке.
Кстати, requirements_py2_conda.txt
содержит:
beautifulsoup4=4.6.*
bokeh=0.13.*
bz2file=0.98
cloudpickle=0.5.*
colour=0.1.*
configparser=3.5.*
cython=0.28.*
dill=0.2.*
fastparquet=0.1.*
future=0.16.*
gensim=3.4.*
graphviz=2.40.*
h5py=2.8.*
hdf5=1.10.*
imageio=2.3.*
ipykernel=4.8.*
ipython=5.8.*
ipywidgets=7.4.*
keras=2.2.*
lxml=4.2.*
matplotlib=2.2.*
mysqlclient=1.3.*
mpld3=0.3
nltk=3.3.*
nose=1.3.*
numba=0.39.*
numexpr=2.6.*
numpy=1.15.*
pandas=0.23.*
pathlib2=2.3.*
patsy=0.5.*
pexpect=4.6.*
pivottablejs=0.9.*
protobuf=3.*
pyemd=0.5.*
pymc3=3.5
pyparsing=2.2.*
pystan=2.17.*
pytest=3.7.*
python=2.7.*
pylint
py-xgboost=0.72.*
pyyaml=3.13
requests=2.19.*
scandir=1.*
scikit-image=0.14.*
scikit-learn=0.19.*
scipy=1.1.*
seaborn=0.9.*
sh=1.12.*
simplegeneric=0.8.*
singledispatch=3.4.0.*
six=1.11.*
sortedcontainers=2.0.*
sqlalchemy=1.2.*
SQLAlchemy=1.2.*
statsmodels=0.9.*
subprocess32=3.5.*
sympy=1.2.*
tabulate=0.8.*
tensorflow=1.10.*
texlive-core=20180414
theano=1.0.*
widgetsnbextension=3.4.*
xlrd=1.1.*
Сообщение об ошибке предлагает
Рассмотрите возможность установки $ PYTHONHOME на [:]
Чтобы увидеть, была ли это проблема, которую я добавил:
echo $PYTHONHOME
Это привело кв одном и том же выводе (т. е. в пустом PYTHONHOME) как при успешном построении, так и при сбое:
Шаг 12/20: RUN echo $ PYTHONHOME
---> Запуск в 59ce6f2776c7
Снятие промежуточного контейнера 59ce6f2776c7
---> cee1ad9f695e
Я сейчас в тупике.Я не знаю, что делать дальше, чтобы провести расследование, и я не знаком с conda (я не писал Dockerfile, но эти случайные сбои блокируют меня, поэтому я занимаюсь расследованием).Любые предложения о том, что я могу сделать, чтобы попытаться раскрыть проблему, будут приветствоваться.