Ваша оболочка не была правильно настроена для использования «conda activ» в dockerfile - PullRequest
0 голосов
/ 25 марта 2020

Я создаю среду anaconda3 с docker.

Однако она показывает ошибку, подобную приведенной ниже.

Я думаю, это связано с некоторой проблемой оболочки ... но я не могу исправлено.

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

1 Ответ

0 голосов
/ 25 марта 2020

Я полагаю, что ваша проблема может заключаться в том, что вы используете свой .bashrc в отдельной строке от команд, которые на него полагаются. Из документации Dockerfile :

Инструкция RUN выполнит любые команды в новом слое поверх текущего изображения и зафиксирует результаты. Полученное зафиксированное изображение будет использовано для следующего шага в Dockerfile.

Это означает, что ваш источник .bashrc находится в одном слое (первая строка RUN), затем RUN ning 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

Запуская их все в одну строку, вы запускаете их в один слой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...