Как связать внешние зависимости CMake для создания пакета Python?

#python #cmake #pybind11 #python-bindings

#python #cmake #пибинд11 #привязки к python

Вопрос:

Я пытаюсь сгенерировать привязки Python для проекта OpenVSlam.


Я использую PyBind11 и следую шаблону cmake_example.

Я успешно создаю .so файл, используя pybind11_add_module в своей среде разработки, в которой у меня установлены все зависимости (библиотеки, такие как OpenCV, Protobuf и т. Д.). .so Файл хорошо работает в этой среде разработки. Я могу правильно запускать import sys; sys.path.append('.'); import openvslam_python; и использовать функции привязки. Тем не менее, я хотел бы отправить .so файл как пакет Python.

Проблема в том, что когда я запускаю python3 setup.py sdist bdist_wheel и пытаюсь установить полученный результат wheel в другой среде (без установленных зависимостей), он сообщает, что не может найти файлы зависимостей. .so Например, он выдает следующую ошибку (в контейнере Docker):

 >>> import sys
>>> sys.path.append('.')
>>> import openvslam_python
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libopenvslam.so: cannot open shared object file: No such file or directory
 

Я хотел бы знать, существует ли способ объединения зависимостей привязок PyBind11 с CMake (или, возможно, внутри setup.py скрипта), чтобы иметь возможность устанавливать их в средах, в которых не установлены какие-либо зависимости. Таким образом, я мог бы установить привязки в любом месте с помощью простой pip install команды.