在Qt-Creator项目中嵌入Python

2024-10-01 22:41:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究一个项目,它要求C++调用一个依赖于Python独占模块的Python编写的程序。p>

该项目使用QtCreator处理,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导入tensorflow时会出现类似错误:

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似乎有问题。然而,像lxml这样使用C源文件的模块可以很好地导入。此外,我可以将问题模块导入到与我正在处理的项目不同的项目中,这意味着这是一个设置问题。请注意,此测试项目设置实际上不使用任何QT功能,而主设置使用任何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时,有什么特别的考虑吗?或者,这可能是与设置错误不同的问题吗


Tags: 模块项目numpyhomelibpackages错误site
1条回答
网友
1楼 · 发布于 2024-10-01 22:41:26

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

我在我的项目中经常使用它,它从来没有失败过,但从未在任何类型的数据科学模块中使用过,也许你可以给它一个机会

https://mevislab.github.io/pythonqt/

相关问题 更多 >

    热门问题