Qt c++ 应用程序中的 Python 解释器 - numpy MSVC 调试

Posted

技术标签:

【中文标题】Qt c++ 应用程序中的 Python 解释器 - numpy MSVC 调试【英文标题】:Python interpreter in Qt c++ application - numpy MSVC debug 【发布时间】:2018-03-08 14:44:49 【问题描述】:

我正在开发一个在 Windows 上嵌入 python 解释器的 Qt 应用程序。 我使用 MSVC 2015 作为构建工具和 Python 3.6.4。当我在 Windows 上安装 Python 时,我还安装了调试版本。之后我使用 pip 命令安装了 numpy。

作为测试,我正在尝试执行简单的 python 函数(如下所述),当我使用发布版本时一切正常。

def testfunction():
    import sys
    print(sys.path)
    import numpy as np             #problematic row in debug
    y = np.float([1.1, 2.3, 3.1])  #problematic row in debug
    print(y)
    return

相反,当我在调试模式下构建 C++ 应用程序时,程序无法执行脚本。我认为问题是由numpy产生的。如果我删除了 import numpy 和数组的创建,它会毫无问题地执行。 有没有办法用 MSVC 的调试符号构建 numpy?

非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

我知道这个问题有些陈旧,但它可能对其他人有所帮助。我刚刚遇到了同样的问题。

您必须在调试模式下从源代码构建 numpy。从他们的 Github repo 上下载最新版本的 numpy 源,解压它们,然后运行:

python_d.exe setup.py build --debug install

这样,您的调试版本的 python 就可以使用 numpy 的调试版本,并且导入将起作用。请注意,python 的发布版本现在将无法导入 numpy。我无法让 numpy 的调试版本和发布版本同时工作。

【讨论】:

以上是关于Qt c++ 应用程序中的 Python 解释器 - numpy MSVC 调试的主要内容,如果未能解决你的问题,请参考以下文章

如何中断嵌入在 C++ 应用程序中的 python 解释器

PyQt4 不可见 C++ 实例化的 QApplication

Libharu 解释 QT c++ 中的链接

为啥 python 3.2 的 Python.h 必须首先与 Qt4 一起包含

在 python 中从服务器发送一些行到 QT(C++) 客户端

如何重定向 python 解释器输出并将其捕获到 C++ 程序中的字符串中?