Встраивание Python в проект Qt Creator - PullRequest
0 голосов
/ 13 января 2020

Я работаю над проектом, который требует C ++ для вызова программы, написанной на Python, которая использует Python эксклюзивные модули.

Проект обрабатывается с использованием Qt Creator и Python 3.7 .5 и его пакеты устанавливаются через Miniconda. Я получил встраивание basi c, работающее с использованием Pybind11, где работает интерфейс basi c, однако большинство внешних модулей не может быть импортировано.

Например, при импорте Numpy через Pybind11 возникает следующая ошибка брошено (сокращено для краткости):

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

Кажется, это проблема с Python * C Обнаружен API при чтении общих библиотек с расширением C. Однако модули типа l xml, использующие исходные файлы C, импортируются просто отлично. Кроме того, я могу импортировать проблемные модули в проекты отдельно от проекта, над которым я работаю, подразумевая, что это проблема установки. Обратите внимание, что в этом тестовом проекте настройки фактически не используются какие-либо функциональные возможности 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? Или это скорее проблема, отличная от ошибки установки?

1 Ответ

0 голосов
/ 13 января 2020

Возможно, вы можете рассмотреть возможность использования PythonQt в качестве альтернативного модуля для вызова и импорта библиотек python из приложения Qt.

Я часто использовал его в своих проектах, и он никогда не подводил, но никогда не использовал его с любыми любыми научными модулями c, возможно, вы могли бы дать ему шанс

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

...