SnakeMake不会激活conda环境

时间:2018-09-11 14:00:41

标签: python conda snakemake

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

但是,在运行此Snakefile时,Snakemake不会激活Conda环境并返回此错误:

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创建的环境),但没有成功(错误消息表示没有使用该名称的环境,但是,{ {1}}将其列出为现有)。为了进一步测试Conda功能,我手动创建了Conda环境,并能够使用后一个命令将其激活(命令conda info --envs不起作用)。

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

Conda版本:4.5.11

SnakeMake版本:5.2.4

Snakefile:

source activate testenv

Emirge.yaml:

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

编辑:

我正在使用以下命令运行Snakemake:

channels:
- bioconda
dependencies:
- emirge=0.61.1

1 个答案:

答案 0 :(得分:1)

您必须告诉snakemake在命令行上使用conda:

snakemake --use-conda

文档指出:

  

CONDA:
        --use-conda
  如果在规则中定义,请在conda环境中运行作业。如果未设置此标志,则会忽略conda指令。

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

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

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

相关问题