【问题标题】:snakemake uses different shell/conda enviroment?snakemake 使用不同的 shell/conda 环境?
【发布时间】:2021-09-27 18:03:54
【问题描述】:

我在 conda 环境中使用 Snakemake。在我的蛇文件的开头,我有一个“日志规则”,它保存了运行信息。其中一个信息是哪些工具是环境的一部分 (conda list >> log.file)。

    rule logRule:
        params:
            runID
        output:
            cfgLocation+runID+"_runParams.txt"
        priority: 1
        shell:
            """
            echo {params} >> {output}
            date >> {output}
            cat Snakefile >> {output}
            echo "-----___----____---____---____-----" >> {output}
            conda list >> {output} 
            """

这可能不是最优雅的方式,但它适用于其他环境。但是,在当前它说它找不到命令“conda”。但是,直接运行 conda list 确实可以正常工作(我也调用 snakemake -p --cores 8 的同一 shell 会话。

在寻找原因的过程中,我还发现ll 命令(别名为ls -l)也找不到。

我认为snakemake使用当前活动的conda env,如果直接运行它可以在env中工作,我什至不知道如何寻找解决方案。

任何建议来自哪里,以及如何解决这个问题,我们将不胜感激。

【问题讨论】:

    标签: python conda snakemake


    【解决方案1】:

    如果您从另一个选项卡/窗口(例如在 tmux 中)启动 snakemake,则它不会继承环境,并且应该在运行 snakemakesource activateconda activate 之前显式激活此环境(视情况而定) )。

    也有可能是snakemakepython安装在了环境之外,可以通过which snakemakewhich python进行检查。如果它们指向活动环境之外的二进制文件,则可能需要将它们安装在活动环境中。

    也许更稳健的方法是通过conda 指令为每个规则显式指定环境(请参阅docs)。请注意,这确实需要您提前指定环境(这可能与您之后的环境不同)。

    【讨论】:

    • 感谢您的回复。我正在使用 tmux,但是 snakemake -p --cores 8conda list 之间的差异确实发生在同一个 tmux 会话中(在其中我使用 `conda activate 激活了 env)
    • 你能看看which python是否指向你的环境吗?还有which snakemake?
    • 两者都指向正确的环境 .../miniconda3/envs//bin/snakemake .../miniconda3/envs//bin/python
    • 我明白了...嗯,好吧,这是一个 hack,但是在 shell 指令中明确地添加 conda activate 可能会起作用。
    • 另外,你能查一下which conda吗?
    猜你喜欢
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多