Qt使用QProcess调用python

时间:2018-01-13 16:53:05

标签: python c++ qt

我正在尝试使用QProcess从QT项目启动python脚本,看起来我一直收到错误

错误:

Debugging starts
Python error: "ImportError: No module named site\r\n"  
Python result= ""
Debugging has finished

但是我已经把它分解成这么简单的项目了。我完全不知道为什么会这样。我在网上搜索了几个小时,发现SO的一些链接建议我设置env路径,这对两者都没有帮助。任何帮助将不胜感激。

以下是我的项目文件和规范:

  • 本地Python安装:2.7.12(v2.7.12:d33e0cf91556,2016年6月27日,15:19:22)[MSC v.1500 32位(英特尔)]
  • 计算机:Windows 7 Pro
  • Qt Creator 4.2 :使用桌面Qt构建5.7.1 MinGW 32位

pythonTest.py :这是QT项目应该调用的python文件

print('hello world')

mainwindow.cpp :我只是创建了一个新项目,这里添加的是mainwindow.cpp代码

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QProcess>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QProcess p;
    QStringList params;
    QString pythonPath = "C:/Python27/python.exe";
    QString pythonScript = "C:/Users/Martini/Desktop/trash/pythonTest.py";

    params << pythonScript;
    p.start(pythonPath, params);
    p.waitForFinished(-1);
    QString p_stdout = p.readAll();
    QString p_stderr = p.readAllStandardError();
    if(!p_stderr.isEmpty())
       qDebug()<<"Python error:"<<p_stderr;
    qDebug()<<"Python result="<<p_stdout;
}

更新(ekhumoro解决方案)

QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("PYTHONPATH", "C:\\Python27\\Lib");
env.insert("PYTHONHOME", "C:\\Python27");
p.setProcessEnvironment(env);

0 个答案:

没有答案