Активация среды conda по рецепту сингулярности - PullRequest
1 голос
/ 23 января 2020

Я новичок в Singularity и хотел бы активировать среду conda (myenv) в рецепте Singularity, чтобы установить в него пакет (mypkg). Я прочитал некоторые похожие посты, но ответы не решили мою проблему, хотя вопросы очень похожи ( Активировать среду conda при выполнении контейнера Singularity в Nextflow , Как активировать среду Anaconda в Рецепт Сингулярности , Построение рецепта Сингулярности из Nipype docker image CommandNotFound ). Не могли бы вы помочь мне найти то, что я пропустил, пожалуйста?

В моем случае myenv автоматически активируется, когда я запускаю контейнер, но мне не удается активировать его во время сборки контейнера для установки mypkg. У меня нет сообщения об ошибке, но пакет установлен в базовом env вместо myenv.

Bootstrap: docker
From: ubuntu:18.04

%files
    myenv.yml

%environment
    export LC_ALL=C
    export LC_NUMERIC=en_GB.UTF-8
    export PATH="/opt/miniconda/bin:$PATH"
    export PATH="/opt/miniconda/envs/$(head -1 myenv.yml | cut -d' ' -f2)/bin:$PATH"

%runscript
    exec "$@"

%post
    # miniconda2: get miniconda2 version 4.5.1
    wget https://repo.continuum.io/miniconda/Miniconda2-4.7.12.1-Linux-x86_64.sh -O miniconda.sh

    #install conda
    bash miniconda.sh -b -p /opt/miniconda
    export PATH="/opt/miniconda/bin:$PATH"

    #install conda env.yml file
    echo ". /opt/miniconda/etc/profile.d/conda.sh" >> $SINGULARITY_ENVIRONMENT
    echo "conda activate $(head -1 myenv.yml | cut -d' ' -f2)" >> $SINGULARITY_ENVIRONMENT
    /opt/miniconda/bin/conda env create -f myenv.yml

    # Activate conda env, clone and install mypkg
    . /opt/miniconda/bin/activate myenv &&
    git clone https://github.com/mypkg.git &&
    cd mypkg&&
    python setup.py install

1 Ответ

0 голосов
/ 03 февраля 2020

Вместо . /opt/miniconda/bin/activate myenv попробуйте использовать:

. /opt/conda/etc/profile.d/conda.sh
conda activate myenv

Лучше поддерживается прямое использование функций.

...