如何在执行过程中在容器中启动conda/mamba环境

问题描述 投票:0回答:1

我想在我的容器上执行 exec 并执行我的命令:

apptainer exec myContainer.sif myCommand

(或奇点)

但是 myCommand 在 conda/mamba 环境中,所以我正在做:

apptainer exec myContainer.sif bash -c 'source /opt/mamba/etc/profile.d/mamba.sh; source activate mambaEnvironment; myCommand'

这效果很好。我尝试在定义文件的部分设置曼巴环境激活,如下所示:

%environment
  PATH=$PATH:/bbmap/:/opt/mamba/bin/
  . /opt/mamba/etc/profile.d/mamba.sh
  mamba activate blee

但它似乎没有做任何事情。我基本上想对其进行设置,以便每次执行 apptainer exec (或奇异性 exec)时,它都会加载到适当的 mamba/conda 环境(这样我就可以作为 nextflow 管道的一部分轻松运行它)。我该怎么做?

以下是食谱示例:

Bootstrap: docker
From: ubuntu:20.04

%post
  apt-get -y update
  apt-get -y upgrade
  DEBIAN_FRONTEND=noninteractive
  apt-get -y install default-jre
  apt-get -y --no-install-recommends install wget git zlib1g-dev curl openssh-client tar gzip ca-certificates build-essential cmake

  #Install Mamba
  readonly mamba_installer="Mambaforge-$(uname)-$(uname -m).sh"
  readonly mamba_version="4.10.3-4"
  readonly mamba_prefix="/opt/mamba"
  wget "https://github.com/conda-forge/miniforge/releases/download/${mamba_version}/${mamba_installer}"
  bash "${mamba_installer}" -b -p "${mamba_prefix}"
  rm "${mamba_installer}"
  export PATH="/opt/mamba/bin:$PATH"

  PATH=$PATH:/bbmap/
  mamba config --add channels defaults
  mamba config --add channels conda-forge
  mamba config --add channels bioconda

  mamba create -y -n blee python=3.6 pip
  mamba init
  . /opt/mamba/etc/profile.d/mamba.sh
  . activate blee
  mamba install -n blee -c bioconda nanocomp porechop

%environment
  PATH=$PATH:/bbmap/:/opt/mamba/bin/
  . /opt/mamba/etc/profile.d/mamba.sh
  mamba activate blee

%runscript
    exec "$@"
containers conda singularity-container mamba
1个回答
0
投票

据我所知,conda/mamba 环境仅在交互式登录时激活,即使您将激活放入

.bashrc
文件中。

如果将 env bin 添加到

PATH
它通常可以工作,但可能需要将更多路径添加到脚本中。像
ENV PATH /opt/mamba/env/blee/bin:$PATH
之类的东西。如果您使用可执行脚本,还请记住更新 shebang。

© www.soinside.com 2019 - 2024. All rights reserved.