在Qt Creator项目中嵌入Python

问题描述 投票:0回答:1

我正在一个需要C ++调用依赖Python专用模块的用Python编写的程序的项目。

该项目使用Qt Creator处理,Python 3.7.5及其软件包通过Miniconda安装。我已经使用Pybind11进行了基本的嵌入,可以在其中进行基本的接口连接,但是,大多数外部模块无法导入。

例如,当通过Pybind11导入Numpy时,抛出以下错误(为简便起见,减少了该错误:]]

Importing the numpy c-extensions failed.

Original error was: /home/brentnallt/miniconda3/envs/car_class_nogpu/lib/python3.7/site-packages/numpy/core/_multiarray_umath.cpython-37m-x86_64-linux-gnu.so: undefined symbol: PyMemoryView_FromObject

通过Pybind11导入张量流时发生类似的错误:

ImportError: /home/brentnallt/miniconda3/envs/car_class_nogpu/lib/python3.7/lib-dynload/_ctypes.cpython-37m-x86_64-linux-gnu.so: undefined symbol: PyUnicode_FromFormat

读取C扩展共享库时发现Python的C API似乎是一个问题。但是,使用C源文件的lxml之类的模块可以很好地导入。此外,我可以将问题模块导入与我正在处理的项目分开的项目中,这暗示它是设置问题。请注意,此测试项目设置实际上并未使用任何QT功能,而主要功能却使用了。

我的PYTHONHOME环境变量看起来像:

['/home/brentnallt/miniconda3/envs/car_class_nogpu/lib/python3.7', '/home/brentnallt/miniconda3/envs/car_class_nogpu/lib/python3.7/site-packages', '/home/brentnallt/miniconda3/envs/car_class_nogpu/lib/python37.zip', '/home/brentnallt/miniconda3/envs/car_class_nogpu/lib/python3.7/lib-dynload', '.']

在嵌入Qt Creator时,我有什么特别的考虑吗?还是这可能是与设置错误不同的问题?

我正在一个需要C ++调用依赖Python专有模块的用Python编写的程序的项目中。该项目使用Qt Creator处理,Python 3.7.5及其软件包为...

python qt numpy qt-creator python-c-api
1个回答
0
投票

也许您可以考虑使用PythonQt作为从Qt应用程序调用和导入python库的替代模块。

我在项目中经常使用它,但从未失败,但从未将它与任何种类的数据科学模块一起使用,也许您可​​以给它机会

© www.soinside.com 2019 - 2024. All rights reserved.