5

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

运行snakemake 4.8.0

我有一个蛇形管道,我使用两个 conda envs 和 --use-conda 运行它,当作为独立管道运行时它工作正常。

然而,当我在我们的集群上运行时,我得到了错误:

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

现在。Anaconda 安装在我们的集群上,但我们需要在节点上激活它:

module load anaconda

另外,模块被定义为一个函数,所以我首先有一些东西。因此,在我的蛇文件的顶部,我有:

shell.prefix("source $HOME/.bashrc; source /etc/profile; module load anaconda; )

这并不能解决问题。

我什至放module load anaconda了我的.bashrc,但仍然不起作用。仅在集群执行时,我才收到有关未找到 conda 的错误。

我的其他更改.bashrc被snakemake拾取并被拾取,所以我不知道为什么它会出现conda问题。

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

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

仍然显示“$PATH 中没有‘conda’命令。”

从字面上撕掉我的头发。

顺便说一句,我提交了 usingqsub -S /bin/bash和 useshell.executable("/bin/bash")但是创建的临时 shell 脚本由.snakemake运行/bin/sh- 这是预期的吗?

请帮我!

4

4 回答 4

2

我总是必须使用:

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

(在哪里{params.env}从我的 config.yaml 加载 conda 命令)

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

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

于 2018-04-05T20:44:38.073 回答
2

您可以提供自定义的“作业脚本模板”,您尝试过吗?默认的看起来像这样:

#!/bin/sh
# properties = {properties}
{exec_job}

所以也许你的看起来像这样:

#!/bin/bash
# properties = {properties}
module add anaconda
{exec_job}

然后你--jobscript在运行snakemake时使用参数引用这个文件。

PS如果您查看代码,则在没有任何设置的情况下{exec_job}填充了对的调用,我认为这会导致您看到的错误。python -m snakemakePATH

于 2018-04-06T04:43:57.057 回答
1

module所做的通常无非就是修改 PATH 和其他环境变量。这也适用于 conda 环境和source activate

例如,在我们的集群上,QIIME2 安装在 conda 环境中,但它的模块文件是

prepend-path    PATH            /opt/sw/qiime/2.2018.2/bin
prepend-path    PYTHONPATH      /opt/sw/qiime/2.2018.2/lib/python3.5/site-packages

而我们的conda模块文件是

prepend-path    PATH            /opt/sw/conda/3/bin

所以假设MAGpy-3.5是你的 conda 环境,你可以

(a) 为您的 MAGpy 管道制作一个模块并加载它,忽略它是一个 conda 环境或

(b) 使用修改后的 PATH 使 snakemake 运行(我不知道 snakemake 如何处理环境变量)

(c) 在 .bashrc 中添加 conda 安装或 MAGpy 安装的路径

(b) 和 (c) 都违背了拥有模块系统 IMO 的目的,但我发现 anaconda本身modulefiles. 在我们的集群中,当我们使用 anaconda 安装一些软件时,我们从不让用户加载它们source activate,而是为它们编写modulefiles

于 2018-04-06T13:00:19.367 回答
0

我遇到了同样的问题,并通过将提交文件中的路径导出到(隐藏的)conda 目录来解决它,该目录通常位于您的主目录中。例如

export PATH=/home/yourusername:$PATH
于 2021-02-18T13:27:17.120 回答