我已经使用 python 3.3 和 Qt4.8 创建了一个 PyQt 应用程序,并且我正在从它开始一个 QProcess。新启动的子进程尝试运行 python 脚本,但该脚本失败,因为它在 3.3 目录中搜索 python 模块(系统上的默认 python 为 2.7)。
我认为它正在 python 3.3 目录中搜索 python 模块,因为子进程从父进程继承其环境(因此也继承了 PYTHONPATH)。我可以使用 QProcess.setProcessEnvironment 更改 PYTHONPATH,但是如何在使用 python 3.3 的 PyQt 应用程序中获取 2.7 的 PYTHONPATH 值?
编辑: Viktor 下面的答案对我有用。我需要从环境中删除 PYTHONPATH 和 PYTHONHOME。我需要删除 PYTHONHOME 因为否则启动器正在从我的应用程序的本地目录中使用(我使用 py2app 创建了应用程序/包)。下面是代码:
systemEnvironment = QtCore.QProcessEnvironment.systemEnvironment()
systemEnvironment.remove( 'PYTHONPATH' )
systemEnvironment.remove( 'PYTHONHOME' )
process.setProcessEnvironment( systemEnvironment )