小编典典

Subprocess.call或Subprocess.Popen无法使用PATH(Linux / Windows)中的可执行文件

python

我正在编写一个程序,该程序需要同时在Linux和Windows上运行,并使用
路径中存在的可执行文件(带有参数)。(假定)

目前,我在使用
Subprocess.Call和Subprocess.Popen在Windows中运行可执行文件时遇到麻烦。

对于这样的代码,在Windows 8中

def makeBlastDB(inFile, inputType, dbType, title, outDir):
    strProg = 'makeblastdb'
    strInput = '-in ' + inFile
    strInputType = '-input_type ' + inputType
    strDBType = '-dbtype ' + dbType
    strTitle = '-title ' + title
    strOut = '-out ' + os.path.join(os.sep, outDir, title)
    cmd = [strProg, strInput, strInputType, strDBType, strTitle, strOut]
    result = Popen(cmd, shell=True)

我在控制台中收到错误消息

'makeblastdb' is not recognized as an internal or external command,
operable program or batch file.

即使我可以使用cmd.exe运行相同的命令,但
在shell = False时仍会得到相同的响应。

假设可执行文件位于PATH
环境变量中,关于如何运行命令的任何想法?谢谢


阅读 215

收藏
2021-01-20

共1个答案

小编典典

好的,这就是我的工作方式。

env = os.environ
proc = subprocess.Popen(args, env=env)
2021-01-20