您的shell尚未正确配置,无法在dockerfile上使用'conda activate'

t1qtbnec  于 2022-11-22  发布在  Docker
关注(0)|答案(2)|浏览(195)

我正在和多克一起制作水蟒环境。
但是,它会显示如下错误。
我想这是与一些 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'.

我的文件在这里。

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
rqcrx0a6

rqcrx0a61#

我认为您的问题可能是您将.bashrc与依赖它的命令放在了单独的一行上。
RUN指令将在当前映像之上的新层中执行任何命令,并提交结果。提交的结果映像将用于Dockerfile中的下一步。
这意味着您在一个层(第一行RUN)中获取.bashrc,然后在一个层中执行RUN命令,该层对前一层中的环境一无所知。
请尝试以下操作:

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

通过在一行中运行所有这些命令,您可以在单个层中运行它们。

n6lpvg4x

n6lpvg4x2#

你也可以在quite a bit easier way中这样做,如果你在创建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 . .

This stuff可以帮助您使用带有 docker-compose 实用程序的conda。

相关问题