gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:47 24 4
gpt4 key购买 nike

我目前正在编写一个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 上获得的结果?

最佳答案

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 模块。

关于python - 在 python 中,使用 os.system 调用模块,然后基于该模块调用 python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24190793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com