Как активировать среду Anaconda в рецепте Singularity

Я пытаюсь создать образ и рецепт сингулярности, которые создадут среду anaconda, а затем активируют указанную среду, чтобы я мог построить колесо python проекта в этой среде, чтобы оно было на 100% установлено и функционировало после завершения сборки сингулярности.

Bootstrap: docker
From: nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04

%environment

  # use bash as default shell
  SHELL=/bin/bash

  # add CUDA paths
  CPATH = "/usr/local/cuda/include:$CPATH"
  PATH = "/usr/local/cuda/bin:$PATH"
  LD_LIBRARY_PATH = "/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
  CUDA_HOME = "/usr/local/cuda"

  # add Anaconda path
  PATH = "/usr/local/anaconda3/bin:$PATH"

  export PATH LD_LIBRARY_PATH CPATH CUDA_HOME
  export MKL_NUM_THREADS=1
  export OPENBLAS_NUM_THREADS=1

%setup
  # runs on host
  # the path to the image is $SINGULARITY_ROOTFS

%post
  # post-setup script

  # load environment variables
  . /environment

  # use bash as default shell
  echo "\n #Using bash as default shell \n" >> /environment
  echo 'SHELL=/bin/bash' >> /environment

  # make environment file executable
  chmod +x /environment

  # default mount paths
  mkdir /scratch /data 

  #Add CUDA paths
  echo "\n #Cuda paths \n" >> /environment
  echo 'export CPATH = "/usr/local/cuda/include:$CPATH"' >> /environment
  echo 'export PATH = "/usr/local/cuda/bin:$PATH"' >> /environment
  echo 'export LD_LIBRARY_PATH = "/usr/local/cuda/lib64:$LD_LIBRARY_PATH"' >> /environment
  echo 'export CUDA_HOME = "/usr/local/cuda"' >> /environment

  # updating and getting required packages
  apt-get update
  apt-get install -y wget git vim build-essential cmake

  # creates a build directory
  mkdir build
  cd build

  # download and install Anaconda
  CONDA_INSTALL_PATH = "/usr/local/anaconda3"
  wget https://repo.continuum.io/archive/Anaconda3-5.0.1-Linux-x86_64.sh
  chmod +x Anaconda3-5.0.1-Linux-x86_64.sh
  ./Anaconda3-5.0.1-Linux-x86_64.sh -b -p $CONDA_INSTALL_PATH

  # download and install CaImAn
  git clone https://github.com/flatironinstitute/CaImAn.git
  cd CaImAn
  conda env create -n caiman -f environment.yml
  source activate caiman
  pip install .
  caimanmanager.py install
  source deactivate


%runscript
  # executes with the singularity run command
  # delete this section to use existing docker ENTRYPOINT command

%test
  # test that script is a success

Я пробовал как conda activate, так и source activate и получаю ту же ошибку для обоих.

+ source activate caiman
/bin/sh: 41: source: not found
ABORT: Aborting with RETVAL=255
Cleaning up...

Это просто то, что я должен сделать потом, сделав изображение доступным для записи? Это было бы следующим решением по умолчанию, но было бы неплохо, если бы рецепт мог просто работать.

*Редактировать 1 . activate caiman возвращается.

+ . activate caiman
+ [[ -n ]]
/bin/sh: 4: /usr/local/anaconda3/bin/activate: [[: not found
+ [[ -n ]]
/bin/sh: 7: /usr/local/anaconda3/bin/activate: [[: not found
+ echo Only bash and zsh are supported
Only bash and zsh are supported
+ return 1
ABORT: Aborting with RETVAL=255
Cleaning up...

* Редактировать 2 При использовании более новой версии Anaconda ошибка не найдена исчезает. Все, что я сделал, это изменил дистрибутив Anaconda, который я получил с помощью wget, а также принудительно обновил его, чтобы быть вдвойне уверенным.

# download and install Anaconda
  CONDA_INSTALL_PATH = "/usr/local/anaconda3"
  wget https://repo.continuum.io/archive/Anaconda3-5.3.1-Linux-x86_64.sh
  chmod +x Anaconda3-5.3.1-Linux-x86_64.sh
  ./Anaconda3-5.3.1-Linux-x86_64.sh -b -p $CONDA_INSTALL_PATH
  conda update -n base -c defaults conda
  pip install --upgrade pip

Ну вот и ответил на твой вопрос, ты сейчас в очередном баге, но источник решается. Я бы сказал: 1 — не меняйте вопрос, потому что мы не можем запустить сеанс отладки. 2- проверьте свой путь, так как он, похоже, не находит там активацию (вы можете изменить .

E.Serra 14.03.2019 18:15

Да, это было следующее, что я попробовал, и на этом тоже не было костей, он вернул ту же ошибку. Хорошо, пришло время спросить людей Anaconda.

Tom V. 14.03.2019 18:29
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
6
2
2 323
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если я не ошибаюсь (что вполне возможно), то же самое происходит и с virtualenv.

Проблема в том, что источник не является командой, попробуйте:

. activate caiman

вместо

source activate caiman

Редактирование после обновленного вопроса, проверьте этот https://github.com/conda/conda/issues/6639, возможно, вы захотите выяснить, что делает ваша активация (кажется, ищет несуществующие файлы)

Итак, после замены source activate caiman на . activate caiman я получаю следующую ошибку. + . activate caiman + [[ -n ]] /bin/sh: 4: /usr/local/anaconda3/bin/activate: [[: not found + [[ -n ]] /bin/sh: 7: /usr/local/anaconda3/bin/activate: [[: not found + echo Only bash and zsh are supported Only bash and zsh are supported + return 1 ABORT: Aborting with RETVAL=255 Cleaning up...

Tom V. 14.03.2019 18:07

Другие вопросы по теме