你的shell未正确配置在dockerfile中使用“conda activate”。

14

我正在使用docker创建anaconda3环境。

然而它显示了以下错误。

我猜这跟某个shell问题有关,但我还没有修复它。

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'.

我的 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

为什么需要在Docker容器中使用Anaconda环境? - C.Nivs
2个回答

7
我认为您的问题可能是您在不同的行上引用了 .bashrc 和依赖于它的命令。根据 Dockerfile 文档

RUN 指令将在当前镜像的新层中执行任何命令并提交结果。所得到的已提交镜像将用于 Dockerfile 中的下一步骤。

这意味着您正在一个层(第一个 RUN 行)中引用您的 .bashrc ,然后在一个层中运行 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 . /root/.bashrc" 是用来做什么的吗? - RandomFellow
最初的错误是“您的shell未正确配置”。该配置在.bashrc文件中完成,因此我们首先运行该文件。 - Kryten
需要将后续执行命令放在同一行的RUN命令中吗? - undefined

4

如果您在创建venv之后,在Dockerfile中放置一个SHELL ...命令,就可以以相当简单的方式执行此操作,具体请参见这里

FROM continuumio/anaconda3

WORKDIR /usr/src/app

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

COPY ./environment.yml .
RUN conda env create -f environment.yml
SHELL ["conda", "run", "-n", "venv", "/bin/bash", "-c"]

COPY . .

这些东西可以帮助你使用docker-compose工具与conda一起使用。


这种方法对我有效;@Kryten的那个方法没有用。 - Kevin Pauli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接