【问题标题】:RUN conda activate not works. It always shows "restart your shell after running 'conda init' " , DockerfileRUN conda activate 不起作用。它总是显示“运行'conda init'后重新启动你的shell”,Dockerfile
【发布时间】:2020-06-21 03:47:15
【问题描述】:

我打算建一个cuda & anaconda docker 文件,但是尝试了很多次后,它总是警告我错误。

天蓝色管道的日志。

和我的 Dockerfile:

FROM rogerchen/simpledet:cuda10 as cuda
WORKDIR /app

ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
ENV PATH /opt/conda/bin:$PATH

RUN apt-get update \
    && apt-get install -y wget git make python3-dev libglib2.0-0 libsm6 libxext6 libxrender-dev python3-pip \
    && apt-get clean

RUN wget --quiet https://repo.anaconda.com/archive/Anaconda3-5.3.1-Linux-x86_64.sh -O ~/anaconda.sh && \
    /bin/bash ~/anaconda.sh -fbp /opt/conda && \
    rm ~/anaconda.sh && \
    ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \
    echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc && \
    echo "conda activate base" >> ~/.bashrc

SHELL ["/bin/bash", "-c"]

RUN conda update conda -y

RUN conda create -n simpledet python=3.7  -y
RUN conda init bash
RUN conda activate simpledet
RUN conda install cudatoolkit=10.

在“激活”之前有“RUN conda init bash”。所以希望大家给点建议。提前致谢。

【问题讨论】:

标签: bash anaconda dockerfile conda


【解决方案1】:

交互式 bash

conda activate 命令是一个 bash 函数,仅在交互式会话中加载。 DOCKERFILE 已经相当于conda init,即将conda.sh 添加到.bashrc。但是,当前的 SHELL /bin/bash -c 不会加载 .bashrc - 通常需要一个 -i-l 标志。

无需激活 Conda

但这都是无关紧要的,因为在当前代码的情况下,没有理由必须激活 env。相反,从一开始就安装所有依赖项(推荐):

conda create -n simpledet -y python=3.7 cudatoolkit=10.

或至少指定环境:

conda install -n simpledet -y cudatoolkit=10.

环境规范

如果环境需要多个包,或者需要来自 PyPI 的东西,那么最好使用 YAML 环境定义文件并通过它创建 env。示例文件:

simpledet.yml

name: simpledet
channels:
 - defaults
dependencies:
 - python=3.7
 - cudatoolkit=10.
 - pip
 - pip:
   - mxnet

然后您可以使用以下命令创建环境:

COPY simpledet.yml /tmp/simpledet.yml
RUN conda env create -f /tmp/simpledet.yml

【讨论】:

  • 安装 cudatoolkit 后,希望通过 pip3 安装 mxnet。所以我不知道如何构建 Dockfile。
  • 有什么办法可以默认开启'conda init'?
  • @Echo 安装 cudatoolkit 后,希望通过 pip3 安装 mxnet。所以我不知道如何构建 Dockfile。 Conda 不提供该软件包吗?
  • @AMC 嗨,上面的答案对我来说没问题。最后,我放弃了conda,因为用conda我选择了带系统的python3。所以github.com/rwecho/MxNetDocker是我的docker文件,希望对你有用
  • @Echo 因为用conda我选择了带系统的python3。什么意思?
猜你喜欢
  • 1970-01-01
  • 2016-10-23
  • 2014-06-20
  • 2020-12-06
  • 1970-01-01
  • 2020-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多