python - 无法使用 conda 为 docker 映像安装依赖项
问题描述
我正在尝试对具有 environment.yml 文件中的依赖项的烧瓶后端进行 docker 化:
name: lucid2_new
channels:
- plotly
- anaconda
- conda-forge
- r
- defaults
dependencies:
- rpy2=2.9.4
- _r-mutex=1.0.0
- aniso8601=9.0.0
- backcall=0.2.0
- backports=1.0
- backports.functools_lru_cache=1.6.1
- blas=1.0
- ca-certificates=2020.12.5
- certifi=2020.12.5
- click=7.1.2
- cloudpickle=1.6.0
- colorama=0.4.4
- cycler=0.10.0
- cytoolz=0.11.0
- dask-core=2021.2.0
- decorator=4.4.2
- dill=0.3.2
- flask=1.1.2
- flask-cors=3.0.9
- flask-restful=0.3.8
- freetype=2.10.4
- icu=67.1
- imageio=2.9.0
- intel-openmp=2020.2
- ipython=7.20.0
- ipython_genutils=0.2.0
- itsdangerous=1.1.0
- jedi=0.18.0
- jinja2=2.11.3
- joblib=0.17.0
- jpeg=9d
- kiwisolver=1.3.1
- lcms2=2.12
- libclang=10.0.1
- libpng=1.6.37
- libtiff=4.2.0
- llvmlite=0.35.0
- lz4-c=1.9.3
- markupsafe=1.1.1
- matplotlib=3.3.4
- matplotlib-base=3.3.4
- mkl=2020.2
- mkl-service=2.3.0
- mkl_fft=1.2.1
- mkl_random=1.1.1
- networkx=2.5
- numba=0.52.0
- numpy=1.19.2
- numpy-base=1.19.2
- olefile=0.46
- openssl=1.1.1j
- pandas=1.1.3
- parso=0.8.1
- pickleshare=0.7.5
- pillow=8.1.0
- pip=21.0.1
- plotly=4.14.3
- prompt-toolkit=3.0.16
- pydoe2=1.3.0
- pygments=2.8.0
- pyparsing=2.4.7
- pyqt=5.12.3
- pyqt-impl=5.12.3
- pyqt5-sip=4.19.18
- pyqtchart=5.12
- pyqtwebengine=5.12.1
- python=3.7.9
- python-dateutil=2.8.1
- python_abi=3.7
- pytz=2021.1
- pywavelets=1.1.1
- pyyaml=5.4.1
- qt=5.12.9
- r-assertthat=0.2.1
- r-base=3.6.1
- r-bh=1.69.0_1
- r-bit=1.1_14
- r-bit64=0.9_7
- r-blob=1.1.1
- r-cli=1.1.0
- r-crayon=1.3.4
- r-dbi=1.0.0
- r-dbplyr=1.4.0
- r-digest=0.6.18
- r-dplyr=0.8.0.1
- r-fansi=0.4.0
- r-glue=1.3.1
- r-magrittr=1.5
- r-memoise=1.1.0
- r-pillar=1.3.1
- r-pkgconfig=2.0.2
- r-plogr=0.2.0
- r-prettyunits=1.0.2
- r-purrr=0.3.2
- r-r6=2.4.0
- r-rcpp=1.0.1
- r-rlang=0.3.4
- r-rsqlite=2.1.1
- r-tibble=2.1.1
- r-tidyselect=0.2.5
- r-utf8=1.1.4
- retrying=1.3.3
- scikit-image=0.16.2
- scikit-learn=0.23.2
- scipy=1.6.1
- seaborn=0.11.0
- setuptools=52.0.0
- shap=0.37.0
- six=1.15.0
- slicer=0.0.7
- sqlite=3.33.0
- threadpoolctl=2.1.0
- tk=8.6.10
- toolz=0.11.1
- tornado=6.1
- tqdm=4.57.0
- traitlets=5.0.5
- tzlocal=2.1
- wcwidth=0.2.5
- werkzeug=1.0.1
- wheel=0.36.2
- xz=5.2.5
- yaml=0.2.5
- zlib=1.2.11
- zstd=1.4.8
Dockerfile如下:
FROM continuumio/miniconda3
WORKDIR /app_dir
COPY . . /app_dir
RUN conda env create -f environment.yml python==3.7.9
RUN echo "source activate lucid2_new" > ~/.bashrc
ENV PATH /opt/conda/envs/lucid2_new/bin:$PATH
EXPOSE 9874
CMD ["python", "app.py"]
然而,在尝试构建映像时,报告了几个依赖项冲突,即使我可以完美地安装所有依赖项并在不使用 docker 的情况下在本地创建环境,但我无法弄清楚这里的确切问题是什么。我收到以下错误报告。实际上有更多的输出,但由于大小限制,我不能在这里分享:
UnsatisfiableError: The following specifications were found to be incompatible with each other:
#9 2943.3
#9 2943.3 Output in format: Requested package -> Available versions
#9 2943.3
#9 2943.3 Package _openmp_mutex conflicts for:
#9 2943.3 matplotlib-base=3.3.4 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 libtiff=4.2.0 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 r-tidyselect=0.2.5 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 r-bit64=0.9_7 -> libgcc-ng[version='>=7.5.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 zlib=1.2.11 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 pyqtwebengine=5.12.1 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 r-bit=1.1_14 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 mkl=2020.2 -> _openmp_mutex[version='*|>=4.5',build=*_llvm]
#9 2943.3 r-rlang=0.3.4 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 numpy=1.19.2 -> libgcc-ng[version='>=7.5.0'] -> _openmp_mutex[version='*|>=4.5',build=*_llvm]
#9 2943.3 r-tibble=2.1.1 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 xz=5.2.5 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 freetype=2.10.4 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 r-rsqlite=2.1.1 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 pyqt5-sip=4.19.18 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 cytoolz=0.11.0 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 rpy2=2.9.4 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 zstd=1.4.8 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 r-utf8=1.1.4 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 shap=0.37.0 -> libgcc-ng[version='>=7.5.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 r-purrr=0.3.2 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 pywavelets=1.1.1 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 mkl-service=2.3.0 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='*|>=4.5',build=*_llvm]
#9 2943.3 sqlite=3.33.0 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 kiwisolver=1.3.1 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 libpng=1.6.37 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 blas=1.0 -> openblas -> _openmp_mutex[version='*|>=4.5',build=*_llvm]
#9 2943.3 llvmlite=0.35.0 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 tornado=6.1 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 lz4-c=1.9.3 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 scikit-image=0.16.2 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 pandas=1.1.3 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 openssl=1.1.1j -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 r-fansi=0.4.0 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 tk=8.6.10 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 libclang=10.0.1 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 numpy-base=1.19.2 -> blas=[build=openblas] -> _openmp_mutex[version='*|>=4.5',build=*_llvm]
#9 2943.3 r-glue=1.3.1 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 scikit-learn=0.23.2 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 qt=5.12.9 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 scipy=1.6.1 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='*|>=4.5',build=*_llvm]
#9 2943.3 r-digest=0.6.18 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 pillow=8.1.0 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 jpeg=9d -> libgcc-ng[version='>=7.5.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 pyqt-impl=5.12.3 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 mkl_random=1.1.1 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='*|>=4.5',build=*_llvm]
#9 2943.3 icu=67.1 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 pyqtchart=5.12 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 numba=0.52.0 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 pyqt=5.12.3 -> libgcc-ng[version='>=7.5.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 lcms2=2.12 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 r-dplyr=0.8.0.1 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 markupsafe=1.1.1 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 mkl_fft=1.2.1 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='*|>=4.5',build=*_llvm]
#9 2943.3 python=3.7.9 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 yaml=0.2.5 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 pyyaml=5.4.1 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 r-base=3.6.1 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
#9 2943.3 r-rcpp=1.0.1 -> libgcc-ng[version='>=7.3.0'] -> _openmp_mutex[version='>=4.5']
解决方案
不确定,但我会尝试将您的频道更改为
channels
- plotly
- conda-forge
- defaults # already includes anaconda and r
小笔记
您不需要python==3.7.9
在 create 命令中另外需要 - 它已经在 YAML 中。
除非这是一个古老的 Miniconda 图像(v4.4 之前),否则应该更喜欢conda activate
RUN echo "conda activate lucid2_new" > ~/.bashrc
# ENV PATH /opt/conda/envs/lucid2_new/bin:$PATH # the previous command manages PATH
推荐阅读
- javascript - 使用 howler js 可视化音频
- c++ - 在 C++ 中嵌入 V8 会导致与 libcpp 相关的“无法识别的外部符号”错误
- python-3.x - 有没有办法从 dict 播放歌曲?不和谐.py
- reactjs - 在树数据结构上使用递归函数嵌套material-ui表,如何对齐列?
- pandas - 带有 int32 数组的 Pandas Dataframe 到 PySpark Dataframe 错误
- c++ - 为什么 gcc 'UNIX' 和 'unix' 宏不是一回事?
- javascript - 通过 setter 存储的新属性值在执行前生效
- javascript - click onclicking 是什么风格?
- mysql - 处理一对多和多对一映射的问题
- javascript - setTimeout 设置为 0 时延迟约 100 毫秒