使用QProcess执行的程序无法启动

时间:2013-12-19 16:30:47

标签: qt pyqt qprocess

我正在尝试在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 0proc.error() 0proc.readAllStandardError()proc.readAllStandardOutput()为空。在PATH中正确设置了env变量,此外我还指定了程序的完整路径。我做错了什么?

1 个答案:

答案 0 :(得分:2)

事实证明,在chef目录中有chef-solo 一个chef-solo.bat。在命令行上运行chef-solo会执行chef-solo.bat。这不适用于QProcess,您必须明确列出chef-solo.bat才能运行该程序。