сборка докера периодически прерывается из-за того, что недавно установленный conda не может найти библиотеки - PullRequest
0 голосов
/ 20 ноября 2018

Я создаю образ докера, который использует 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, но эти случайные сбои блокируют меня, поэтому я занимаюсь расследованием).Любые предложения о том, что я могу сделать, чтобы попытаться раскрыть проблему, будут приветствоваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...