由于新安装的conda无法找到库,因此docker构建间歇性失败

时间:2018-11-20 09:24:35

标签: python docker conda

我正在构建一个使用conda的docker映像(在基本映像上安装了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步:运行源/ 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
   --->在e828112b4ae0中运行。   找不到平台独立的库
  找不到平台相关的库
  考虑将$ PYTHONHOME设置为[:]
  致命的Python错误:Py_Initialize:无法获取区域设置编码
  ModuleNotFoundError:没有名为“ encodings”的模块
  当前线程0x00007fe6d4851700(最新呼叫优先):
  命令'/ bin / bash -c 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'返回非零代码:134

它断断续续地失败的事实真的困扰着我,如果我每次都不愿意失败的话,但它大约有50%的时间失败了。我四处搜寻,发现了这样的SO线程:ImportError: No module named 'encodings',表明它可能是conda环境的问题。因此,我在间歇性故障之前添加了此docker命令:

RUN conda env list

令人讨厌的 that 命令也间歇性地失败。成功后将返回:

  

第12/18步:运行conda环境列表
   --->在05eaa6f726a9中运行
  #conda环境:
  #
  基本* / opt / conda
  python3 / opt / conda / envs / python3
  python3.6 /opt/conda/envs/python3.6

失败时返回:

  

第12/18步:运行conda环境列表
   --->在20247acc3824中运行
  找不到平台独立的库
  找不到平台相关的库
  考虑将$ PYTHONHOME设置为[:]
  致命的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步:运行echo $ PYTHONHOME
   --->在59ce6f2776c7中运行

     

卸下中间容器59ce6f2776c7
   ---> cee1ad9f695e

我现在很困惑。我不知道下一步该怎么做才能进行调查,而且我对conda不熟悉(我没有编写Dockerfile,但是这些间歇性故障使我受阻,因此我正在调查)。我对尝试发现问题的任何建议都将受到欢迎。

0 个答案:

没有答案