【问题标题】:Python PyQt how to set environment variable for QProcess?Python PyQt 如何为 QProcess 设置环境变量?
【发布时间】:2012-10-04 18:26:48
【问题描述】:

我正在尝试在 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"))

【问题讨论】:

    标签: python qt pyqt environment-variables


    【解决方案1】:

    您是否尝试过使用http://docs.python.org/library/os.html#os.environ?这修改了当前进程的环境(也可以在 /proc 中看到)。

    这个新环境也应该传递给任何衍生的进程。

    【讨论】:

    • 您可以通过在 proc 感知操作系统上查看 /proc/pid/environ 来检查进程环境,以查看环境变量是否设置正确,以确定 QT 进程中的环境解析器是否损坏或环境设置器。
    【解决方案2】:

    您发布的代码似乎没有明显错误,对我有用。

    这是我的测试文件和输出:

    生成文件

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 2022-01-08
      • 2020-02-14
      相关资源
      最近更新 更多