我有一个奇怪的问题,来来往往,我真的不知道什么时候和为什么。
我在运行这样一条蛇形管道:
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脚本如下所示:
#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显然已经安装好了。正如我所说,这个问题总是来来去去。它会停留几个小时,然后暂时离开,完全没有理由。我想这表明了一个环境问题,但我真的搞不清楚是什么,而且没有什么想法。我试过:
不同的conda versions
。
但什么都没有。知道去哪找吗?谢谢!
发布于 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。
我仍然不理解这种行为,但至少我可以通过改变#路径来解决这个问题。我想这不是一个非常优雅的解决方案,但它对我有效。
发布于 2019-12-27 08:40:27
一种可能是一些集群节点找不到到snakemake包的路径,所以当作业被提交到这些节点时,就会得到错误。
我不知道这种情况是否会/如何发生,但如果是这样的话,您可以找到被定罪的节点,如下所示:
for node in pbsnodes
do
echo $node
ssh $node 'python -c "from snakemake.utils import read_job_properties"'
done(for nodes in pbsnodes遍历可用的节点--我现在还没有确切的语法,但希望您能理解)。这至少可以缩小问题的范围.
https://stackoverflow.com/questions/59493422
复制相似问题