Я работаю над проектом, который требует 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? Или это скорее проблема, отличная от ошибки установки?