首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >snakemake集群脚本ImportError snakemake.utils

snakemake集群脚本ImportError snakemake.utils
EN

Stack Overflow用户
提问于 2019-12-26 20:59:35
回答 2查看 827关注 0票数 5

我有一个奇怪的问题,来来往往,我真的不知道什么时候和为什么。

我在运行这样一条蛇形管道:

代码语言:javascript
复制
conda activate $myEnv    
snakemake -s $snakefile --configfile test.conf.yml --cluster "python $qsub_script" --latency-wait 60 --use-conda -p -j 10 --jobscript "$job_script"

我在conda环境中安装了snakemake5.9.1(也尝试将其降级为5.5.4)。

如果我只运行这个命令,这会很好,但是当我把这个命令放到我使用的PBS集群时,我会得到一个错误。我的qsub脚本如下所示:

代码语言:javascript
复制
#PBS stuff...

source ~/.bashrc
hostname
conda activate PGC_de_novo

cd $workDir
snakefile="..."
qsub_script="pbs_qsub_snakemake_wrapper.py"
job_script="..."
snakemake -s $snakefile --configfile test.conf.yml --cluster "python $qsub_script" --latency-wait 60 --use-conda -p -j 10 --jobscript "$job_script" >out 2>err

我得到的错误信息是:

代码语言:javascript
复制
...
Traceback (most recent call last):
  File "/path/to/pbs_qsub_snakemake_wrapper.py", line 6, in <module>
    from snakemake.utils import read_job_properties
ImportError: No module named snakemake.utils
Error submitting jobscript (exit code 1):
...

因此,看起来由于某种原因,我的集群脚本没有找到snakemake,尽管snakemake显然已经安装好了。正如我所说,这个问题总是来来去去。它会停留几个小时,然后暂时离开,完全没有理由。我想这表明了一个环境问题,但我真的搞不清楚是什么,而且没有什么想法。我试过:

不同的conda versions

  • different snakemake versions

  • different节点上的集群

  • ssh到它刚刚失败的节点,并尝试再现错误

但什么都没有。知道去哪找吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-02 13:08:47

按照@Manavalan的建议,我在snakefile和集群脚本中都添加了print(sys.version)命令,在这两种情况下,python版本(2.7.5)与激活环境中的版本(3.7.5)不同。

长话短说--由于某种原因,当我激活PBS作业中的环境时,环境路径只在/usr/bin之后添加到$PATH中,这将导致使用/usr/bin/python (它没有snakemake包)。当env被本地激活时,env路径将添加到$PATH的开头,因此使用正确的python。

我仍然不理解这种行为,但至少我可以通过改变#路径来解决这个问题。我想这不是一个非常优雅的解决方案,但它对我有效。

票数 3
EN

Stack Overflow用户

发布于 2019-12-27 08:40:27

一种可能是一些集群节点找不到到snakemake包的路径,所以当作业被提交到这些节点时,就会得到错误。

我不知道这种情况是否会/如何发生,但如果是这样的话,您可以找到被定罪的节点,如下所示:

代码语言:javascript
复制
for node in pbsnodes
do
    echo $node
    ssh $node 'python -c "from snakemake.utils import read_job_properties"'
done

(for nodes in pbsnodes遍历可用的节点--我现在还没有确切的语法,但希望您能理解)。这至少可以缩小问题的范围.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59493422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档