SnakeMake 没有激活 conda 环境

SnakeMake does not activate conda enviroment

我有一个简单的 Snakefile,我有一个使用 YAML 配置文件中定义的 Conda 环境的规则。

然而,当运行这个Snakefile时,Snakemake没有激活Conda环境并且returns这个错误:

Error in rule read_file:
        jobid: 0
        conda-env: /data/projects/testproject/.snakemake/conda/805d8d2a

RuleException:
CalledProcessError in line 5 of /data/projects/testproject/scripts/snake/process.snake:
Command 'source activate /data/projects/testproject/.snakemake/conda/805d8d2a; set -euo pipefail;  emirge ' returned non-zero exit status 2
  File "/data/projects/testproject/scripts/snake/process.snake", line 5, in __rule_read_file
  File "/usr/lib/python3.5/concurrent/futures/thread.py", line 55, in run
Shutting down, this might take some time.
Exiting because a job execution failed. Look above for error message

我试图通过使用 source activate 805d8d2aconda activate 805d8d2a 手动激活 Conda 环境(由 SnakeMake 创建的环境)但没有成功(错误消息暗示没有具有该名称的环境,但是, conda info --envs 将其列为已存在)。为了进一步测试 Conda 功能,我手动创建了一个 Conda 环境并能够使用后一个命令激活它(命令 source activate testenv 不起作用)。

我的问题是:如何设法从我的 SnakeMake 脚本自动激活 Conda 环境?

康达版本:4.5.11

SnakeMake 版本:5.2.4

蛇文件:

rule my_rule:
    conda:
        "emirge.yaml"
    shell:
        "emirge"

Emirge.yaml:

channels:
- bioconda
dependencies:
- emirge=0.61.1

编辑:

我是 运行 Snakemake 命令:

snakemake --use-conda

你必须在命令行中告诉 snakemake 使用 conda:

snakemake --use-conda

文档指出:

CONDA:
--use-conda
If defined in the rule, run job in a conda environment. If this flag is not set, the conda directive is ignored.

你遇到的错误是因为你运行的shell命令不存在。
Snakemake 执行命令

source activate /data/projects/testproject/.snakemake/conda/805d8d2a; set -euo pipefail;  emirge

我认为您的环境已正确创建和激活,但未找到命令 emirge