gpt4 book ai didi

python - Subprocess.call 或 Subprocess.Popen 不能使用 PATH (Linux/Windows) 中的可执行文件

转载 作者:太空狗 更新时间:2023-10-29 17:42:51 32 4
gpt4 key购买 nike

我正在编写一个需要在 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 环境变量中,关于如何运行命令的任何想法?谢谢

最佳答案

您可以通过传递带有 env 关键字参数的映射来控制衍生子进程中可用的环境变量。例如

proc = subprocess.Popen(args, env={'PATH': '/some/path'})

或者从系统环境变量继承 PATH,而不必从系统环境中删除其他所有内容:

proc = subprocess.Popen(args, env={'PATH': os.getenv('PATH')})

不过,使用绝对路径可能更容易/更简单。

关于python - Subprocess.call 或 Subprocess.Popen 不能使用 PATH (Linux/Windows) 中的可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14679466/

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