我目前正在写一个python脚本。
这里的最终目标只是导入pysam。但是,为了做到这一点,我首先导入了一套称为galaxy的工具,pysam就是其中之一。
如果在命令行中先加载galaxy,然后进入python交互shell,然后导入pysam,则导入成功。
但是,我的脚本是这样的:
#!/usr/bin/env python
import subprocess
subprocess.call("module load galaxy/galaxy", shell=True)
subprocess.call("module load ngs-ccts/tabix/0.2.6", shell=True)
import pysam
caddfile=pysam.Tabixfile( "/scratch/share/public_datasets/ngs/databases/CADD/v1.0/whole_genome_SNVs_inclAnno.tsv.gz" )
for gtf in caddfile.fetch(1, 100000, 200000):
print(gtf)对我来说,这似乎概括了我在交互式shell中所做的事情,它是有效的。
但是,该脚本会出现错误并返回:
Traceback (most recent call last):
File "pysampracticer.py", line 7, in ?
import pysam
ImportError: No module named pysam为什么脚本无法导入它,而相同的一系列命令可以在命令行上工作,然后是python交互式shell,我应该如何处理这个问题,以总结在交互式shell上获得的结果?
发布于 2014-06-13 01:51:12
subprocess.call("module load galaxy/galaxy", shell=True)
subprocess.call("module load ngs-ccts/tabix/0.2.6", shell=True)加载子进程中的模块。它不会影响当前进程。
不仅如此,这两个调用还创建了两个独立子进程。在第一个子进程中,加载了galaxy/galaxy模块,但没有加载ngs-ccts/tabix/0.2.6模块。在第二个子进程中,加载了ngs-ccts/tabix/0.2.6,但没有加载galaxy/galaxy模块。
https://stackoverflow.com/questions/24190793
复制相似问题