Snakemake:我一直在获取'conda'命令在$ PATH中不可用。在SGE群集上运行时

Mic*_*son 5 conda environment-modules snakemake

我在这里扯头发,希望有人可以帮助我。

运行snakemake 4.8.0

我有一个snakemake管道,它与两个conda env和--use-conda一起运行,并且在作为独立管道运行时可以正常工作。

但是,当我在集群上运行时,出现错误:

“'conda'命令在$ PATH中不可用。”

现在。Anaconda已安装在我们的集群上,但是我们需要使用以下命令在节点上激活它:

module load anaconda
Run Code Online (Sandbox Code Playgroud)

另外,模块被定义为一个函数,因此我首先要介绍一些东西。因此,在我的snakefile的顶部,我有:

shell.prefix("source $HOME/.bashrc; source /etc/profile; module load anaconda; )
Run Code Online (Sandbox Code Playgroud)

这不能解决问题。

我甚至把module load anaconda我的.bashrc,而且仍然无法正常工作。仅在群集执行时,我收到关于找不到conda的错误。

我的其他更改.bashrc都由snakemake提取,因此我不知道为什么它在conda上有问题。

我什至创建了一个conda env,将snakemake和conda加载到该env中,在提交脚本和Snakefile中激活该env:

shell.prefix("source $HOME/.bashrc; source /etc/profile; module load anaconda; source activate MAGpy-3.5; ")
Run Code Online (Sandbox Code Playgroud)

仍然显示 “'conda'命令在$ PATH中不可用”。

从字面上把我的头发扯掉。

顺便说一句,我提交qsub -S /bin/bash并同时使用,shell.executable("/bin/bash")但是在其中创建的temp shell脚本由.snakemake运行/bin/sh-是预期的吗?

请帮我!

小智 2

我总是必须使用:

set +u; {params.env}; set -u

{params.env}从我的 config.yaml 加载 conda 命令的位置)

shell当在Snakefile 命令中调用 conda 环境时,因为 Snakemake 会自动在 shell 命令前面加上set +u.

不确定这是否能解决您的问题,但值得一试吗?