您的 shell 尚未正确配置为在 dockerfile 上使用“conda activate”

whi*_*ear 14 python docker anaconda

我正在用docker制作anaconda3环境。

但是它显示如下错误。

我猜这与一些外壳问题有关..但我还无法修复。

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run

    $ conda init <SHELL_NAME>

Currently supported shells are:
  - bash
  - fish
  - tcsh
  - xonsh
  - zsh
  - powershell

See 'conda init --help' for more information and options.

IMPORTANT: You may need to close and restart your shell after running 'conda init'.
Run Code Online (Sandbox Code Playgroud)

我的 dockerfile 在这里。

FROM ubuntu:18.04

RUN apt-get -y update
RUN apt-get -y install emacs wget
RUN wget https://repo.continuum.io/archive/Anaconda3-2019.07-Linux-x86_64.sh
RUN /bin/bash Anaconda3-2019.07-Linux-x86_64.sh -b -p $HOME/anaconda3
RUN echo 'export PATH=/root/anaconda3/bin:$PATH' >> /root/.bashrc 

#RUN source /root/.bashrc
RUN . /root/.bashrc
RUN /root/anaconda3/bin/conda init bash
RUN /root/anaconda3/bin/conda create -n py37 python=3.7 anaconda
RUN /root/anaconda3/bin/conda activate py37
Run Code Online (Sandbox Code Playgroud)

Kry*_*ten 7

我相信您的问题可能是您将您的源代码.bashrc与依赖它的命令放在单独的行上。来自Dockerfile 文档

RUN 指令将在当前映像之上的新层中执行任何命令并提交结果。生成的提交映像将用于 Dockerfile 中的下一步。

这意味着您将.bashrc在一个层(第一RUN行)中获取命令,然后在RUN层中执行该命令,该新层对上一层中的环境一无所知。conda

尝试这样的事情:

RUN . /root/.bashrc && \
    /root/anaconda3/bin/conda init bash && \
    /root/anaconda3/bin/conda create -n py37 python=3.7 anaconda && \
    /root/anaconda3/bin/conda activate py37
Run Code Online (Sandbox Code Playgroud)

通过在一条线上运行它们,您可以在单层中运行它们。