snakemake 集群脚本 ImportError snakemake.utils

sou*_*alo 5 python hpc pbs conda snakemake

我有一个奇怪的问题,它来来去去,我真的不知道什么时候以及为什么。
我正在运行这样的蛇形管道:

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"
Run Code Online (Sandbox Code Playgroud)

我在 conda 环境中安装了 snakemake 5.9.1(也尝试降级到 5.5.4)。
如果我只运行这个命令,这工作正常,但是当我将此命令 qsub 到我正在使用的 PBS 集群时,我收到一个错误。我的 qsub 脚本如下所示:

#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
Run Code Online (Sandbox Code Playgroud)

我得到的错误信息是:

...
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):
...
Run Code Online (Sandbox Code Playgroud)

所以看起来由于某种原因我的集群脚本没有找到snakemake,尽管snakemake已经明确安装。正如我所说,这个问题不断出现。它会停留几个小时,然后因为现在明显的原因而消失。我想这表明环境问题,但我真的不知道是什么,并且没有想法。我试过了:

  • 不同的 conda 版本
  • 不同的蛇形版本
  • 集群上的不同节点
  • ssh 到它刚刚失败的节点并尝试重现错误

但没什么。任何想法在哪里看?谢谢!

sou*_*alo 4

按照 @Manavalan Gajapathy 的建议,我print(sys.version)向 Snakefile 和集群脚本中添加了命令,并且在这两种情况下都获得了与激活环境中指示的版本 (3.7.5) 不同的 Python 版本 (2.7.5)。
长话短说 - 由于某种原因,当我在 PBS 作业中激活环境时,环境路径仅在 /usr/bin 之后添加到 $PATH 中,这会导致使用 /usr/bin/python (这确实没有snakemake包)。当本地激活 env 时,env 路径会添加到 $PATH 的开头,因此使用正确的 python。
我仍然不明白这种行为,但至少我可以通过更改#PATH 来解决它。我想这不是一个非常优雅的解决方案,但它对我有用。