我正在尝试在QT应用中为正在运行的QProcess设置环境变量。代码如下。但是在测试内部时,似乎没有设置环境变量。有什么建议吗?
def runUbootTests(self):
env = QtCore.QProcessEnvironment.systemEnvironment()
env.insert("LINUX_ETH_ADDR", "3c:98:bf:00:00:f4")
self.process.setProcessEnvironment(env)
self.process.readyReadStandardOutput.connect(self.readReady)
self.process.start("make", ("clean", "check_uboot"))
答案 0 :(得分:1)
您是否尝试过使用http://docs.python.org/library/os.html#os.environ?这修改了当前进程的环境(也可以在/ proc中看到)。
这个新环境也应该传递给任何衍生进程。
答案 1 :(得分:1)
您发布的代码似乎并不明显错误,对我有用。
这是我的测试文件和输出:
生成文件:
clean:
@echo 'SHELL:' $(SHELL)
check_uboot:
@echo 'ADDR:' $(LINUX_ETH_ADDR)
test.py :
from PyQt4 import QtGui, QtCore
class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.button = QtGui.QPushButton('Test', self)
self.button.clicked.connect(self.handleButton)
layout = QtGui.QVBoxLayout(self)
layout.addWidget(self.button)
self.process = QtCore.QProcess(self)
def handleButton(self):
env = QtCore.QProcessEnvironment.systemEnvironment()
env.insert("LINUX_ETH_ADDR", "3c:98:bf:00:00:f4")
self.process.setProcessEnvironment(env)
self.process.readyReadStandardOutput.connect(self.readReady)
self.process.start("make", ("clean", "check_uboot"))
def readReady(self):
print str(self.process.readAllStandardOutput())
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
输出:
$ python2 test.py
SHELL: /bin/sh
ADDR: 3c:98:bf:00:00:f4