【问题标题】:How to debug QProcess script to find the line error comes from?如何调试 QProcess 脚本以查找行错误来自?
【发布时间】:2021-09-04 13:01:54
【问题描述】:

我有一小段代码可以从 Qt c++ 执行 python 脚本。我该如何调试?下面我知道问题是“import nltk”,但我怎么能在一个完整的项目中理解它。我在 Spyder 中运行了 python 代码,甚至我在 Qt 和 Spyder 中都放置了相同的 python 解释器路径,但是在 Spyder 中它运行正确并且创建了 tmp.json 文件,而在 Qt 中没有创建 tmp.json 文件。

ma​​in.cpp

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

int main(int argc, char *argv[])
{

    QProcess p;
    QStringList params;
    params << "F:/NLP/google_corpus/scrape_python/qt/cpy2/someFunction.py";

    p.start("C:/Users/A/anaconda3/python.exe", params);

    qDebug() << "Hello World" << p.error();
    if ( p.state() == QProcess::NotRunning ) {
        return -2;
    };
    //p.waitForFinished(-1);

    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

someFunction.py

import json
import sys
import sys
sys.path.append('C:\\Users\\A\\anaconda3\\lib\\site-packages\\IPython\\extensions')
sys.path.append('C:\\Users\\A\\.ipython')
import nltk
#nltk.data.path.append('.')
previous_tokens = ["hey", "how", "are", "you"]
json_object = json.dumps(previous_tokens)
with open('F:\\NLP\\google_corpus\\scrape_python\\qt\\cpy2\\tmp.json', "w") as outfile:
    outfile.write(json_object)

编辑:Qt python 和 Spyder 中的系统路径不同,所以我在下面添加了几行:

import sys
sys.path.append('C:\\Users\\A\\anaconda3\\lib\\site-packages\\IPython\\extensions')
sys.path.append('C:\\Users\\A\\.ipython')

但还是同样的问题。

【问题讨论】:

  • 你的 python 进程的工作目录在这个 Spyder 东西中是不同的,或者它设置了一些你的 Qt 进程没有设置的额外环境变量。
  • @Botje 如果您的意思是 python 工作目录,是的,它们是相同的。我在 qt python 脚本中添加了 Spyder (Tools-->Environmet variables-->path) 中的环境变量,但同样的问题。
  • 请使用您收到的错误消息编辑您的问题。也请把 Python 的sys.path 的内容都贴出来。
  • @Botje 我编辑了 spyder 中的所有环境变量并将其添加到 qt python 脚本中。同样的问题!
  • 您是否有意省略了sys.path.append 行上可能很重要的那个\?此外,Python 对正斜杠路径感到满意。

标签: python c++ qt qprocess


【解决方案1】:

我将 python 解释器更改为另一个路径中的另一个解释器,尽管 spyder 解释器不同,但它仍然有效!新的解释器:

“C:/Users/A/anaconda3/pkgs/python-3.8.3-he1778fa_2/python.exe”

我还将 nltk 库路径附加到 sys 路径。

【讨论】:

    猜你喜欢
    • 2014-06-15
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多