在我的 Qt C++ 应用程序中使用 Anaconda 的 Python

Posted

技术标签:

【中文标题】在我的 Qt C++ 应用程序中使用 Anaconda 的 Python【英文标题】:Use Anaconda's Python in my Qt C++ application 【发布时间】:2019-03-05 13:02:12 【问题描述】:

我打算 从我的 C++ 代码中调用一些 scikit-learn 算法。出于某种原因,我无法弄清楚如何进行集成。我想知道是否有人知道这样做的分步程序。

【问题讨论】:

【参考方案1】:

如果您的 C++ 代码适用于 Qt Anaconda's current Qt version),您可以通过添加来包含 Python(在本例中为 3.6)

INCLUDEPATH += /home/[username]/anaconda3/include/python3.6m

LIBS += -L/home/[username]/anaconda3/lib/ -lpython3.6m

到您的 .pro 文件。

如果您需要比 Anaconda 提供的版本更高的 Qt 版本,请查看my question here。现在您应该可以在您的应用程序中包含 Python.h 标头了。

备注:请记住,Python 提供了自己的信号和槽机制,这显然与 Qt 冲突。这就是我添加的原因

CONFIG += no_keywords

到我的 pro 文件,并替换所有出现的信号和插槽,如 here 所述。

【讨论】:

【参考方案2】:

我不确定这是否适合您,但我会查看this article。它至少提供了一种从 Qt 应用程序中启动 python 解释器的方法。

我认为这可能会奏效,具体取决于事物的复杂性。

您可以在PythonQt 上找到更多信息。

我不知道它与外部包的配合效果如何。

否则,您可以使用PySide2,它允许您在 python 中使用 Qt5 框架创建 GUI。

希望对你有帮助。

【讨论】:

以上是关于在我的 Qt C++ 应用程序中使用 Anaconda 的 Python的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 语言中将谷歌地图 API 与 MFC 或 QT 一起使用?

需要在 32/64 位 QT C++ 程序中使用卷影复制服务

由于线程冲突 Qt C++,Google 语音识别不起作用

如果数据库可访问,如何快速检查? (Qt、QML、C++)- Linux

使用 Qt GUI 编写 c++ dll,在自定义小部件中显示失败

我可以在不使用其 UI 框架的情况下将 Qt 用作 C++ 库吗