我正在尝试在Windows上使用QProcess
执行一个进程,但它仍然无法启动。这是我正在使用的代码:
env = QtCore.QProcessEnvironment.systemEnvironment()
proc = QtCore.QProcess()
proc.setProcessEnvironment(env)
proc.start('chef-solo --version') # works on command line
# proc.start('\\opscode\\chef\\bin\\chef-solo --version') # works on command line
# proc.start('c:\\opscode\\chef\\bin\\chef-solo --version') # works on command line
# proc.start('chef-solo', '--version') # doesn't work (no command line analog)
# proc.start('chef-solo', ['--version']) # doesn't work (no command line analog)
# proc.start('ping www.google.com') # works!
if not proc.waitForStarted():
print "didn't start", proc.error()
这总是打印didn't start 0
。 proc.error()
0
,proc.readAllStandardError()
和proc.readAllStandardOutput()
为空。在PATH
中正确设置了env
变量,此外我还指定了程序的完整路径。我做错了什么?
答案 0 :(得分:2)
事实证明,在chef目录中有chef-solo
和一个chef-solo.bat
。在命令行上运行chef-solo
会执行chef-solo.bat
。这不适用于QProcess
,您必须明确列出chef-solo.bat
才能运行该程序。