我有一个奇怪的问题,它来来去去,我真的不知道什么时候以及为什么。
我正在运行这样的蛇形管道:
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 环境中安装了 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
我得到的错误信息是:
...
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已经明确安装。正如我所说,这个问题不断出现。它会停留几个小时,然后因为现在明显的原因而消失。我想这表明环境问题,但我真的不知道是什么,并且没有想法。我试过了:
但没什么。任何想法在哪里看?谢谢!
最佳答案
按照@Manavalan Gajapathy 的建议,我添加了 print(sys.version)
对蛇文件和集群脚本的命令,并且在这两种情况下都得到了一个不同于激活环境 (3.7.5) 中指示的版本的 python 版本 (2.7.5)。
长话短说 - 出于某种原因,当我在 PBS 作业中激活环境时,环境路径仅在/usr/bin 之后添加到 $PATH,这导致/usr/bin/python 被使用(它确实没有snakemake包)。在本地激活env时,在$PATH的开头添加env路径,所以使用正确的python。
我仍然不理解这种行为,但至少我可以通过更改 #PATH 来解决它。我想这不是一个非常优雅的解决方案,但它对我有用。
关于python - snakemake 集群脚本 ImportError snakemake.utils,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59493422/