首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中,使用os.system调用模块,然后基于此调用python模块

在python中,使用os.system调用模块,然后基于此调用python模块
EN

Stack Overflow用户
提问于 2014-06-13 01:48:33
回答 1查看 191关注 0票数 1

我目前正在写一个python脚本。

这里的最终目标只是导入pysam。但是,为了做到这一点,我首先导入了一套称为galaxy的工具,pysam就是其中之一。

如果在命令行中先加载galaxy,然后进入python交互shell,然后导入pysam,则导入成功。

但是,我的脚本是这样的:

代码语言:javascript
复制
#!/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中所做的事情,它是有效的。

但是,该脚本会出现错误并返回:

代码语言:javascript
复制
Traceback (most recent call last):
  File "pysampracticer.py", line 7, in ?
    import pysam
ImportError: No module named pysam

为什么脚本无法导入它,而相同的一系列命令可以在命令行上工作,然后是python交互式shell,我应该如何处理这个问题,以总结在交互式shell上获得的结果?

EN

回答 1

Stack Overflow用户

发布于 2014-06-13 01:51:12

代码语言:javascript
复制
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模块。

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

https://stackoverflow.com/questions/24190793

复制
相关文章

相似问题

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