为什么python subprocess.Popen通过cmd.exe启动子进程?

为什么python subprocess.Popen通过cmd.exe启动子进程?,python,windows,subprocess,Python,Windows,Subprocess,我这样调用子流程: command = 'c:\somepath\myexe.exe' startupinfo = subprocess.STARTUPINFO() startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW p = subprocess.Popen(command, shell=False, startupinfo=startupinfo) 似乎不是直接启动myexe.exe,而是通过cmd.exe。我可以在这里避免使用c

我这样调用子流程:

command = 'c:\somepath\myexe.exe'

startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW

p = subprocess.Popen(command, shell=False, startupinfo=startupinfo)

似乎不是直接启动myexe.exe,而是通过cmd.exe。我可以在这里避免使用cmd.exe吗?

如果您使用的是Python 2.7-使用子流程。\u subprocess.STARTF\u USESHOWWINDOW而不是subprocess.STARTF\u USESHOWWINDOW。我想这会解决问题。

你为什么认为它使用了
cmd
?当然不是。你的意思是那里有
|=
,而不是
=。一个是“按位或”赋值,一个是“不等于”比较。您可能看到了启动python脚本的cmd进程。我刚刚看过源代码。Python部分只在
shell=True
的情况下查找
cmd.exe
,而C部分直接使用
CreateProcess()
来生成进程。好吧,如果这就是你所做的,那不是Python的错。也许是myexe.exe在做这件事。有助于查看流程树。试着在运行脚本时查看它。