Общая библиотека, распространяемая в колесе Python, не найдена

У меня есть модуль Python, который содержит расширение C ++, а также разделяемую библиотеку, от которой зависит расширение C ++. Совместно используемая библиотека выбирается setuptools как extra_object для расширения. После запуска python setup.py bdist_wheelобъект колеса модуля, сгенерированный правильно, имеет структуру каталогов следующим образом:

+-pymodule.whl
| +-pymodule
| +-pymodule-version.dist-info
| +-extension.so
| +-shared_lib.so

Чтобы установить это колесо, в моей среде Python я звоню pip install pymodule.whl который копирует исходники Python, а также файлы .so в среду site-packages каталог.

После установки модуля можно попытаться импортировать модуль, вызвав import pymodule в терминале для окружающей среды. Это вызывает исключение, которое будет выдано:

ImportError: shared_lib.so: cannot open shared object file: No such file or directory

Это исключение можно устранить, добавив соответствующий site-packages каталог к LD_LIBRARY_PATH переменная; Тем не менее, кажется, что это должно работать из коробки, особенно с учетом того, что Python явно способен найти extension.so,

Есть ли способ заставить Python найти эту общую библиотеку без явного указания LD_LIBRARY_PATH в месте установки (т.е. site-packages)?

это Вопрос решает аналогичную проблему, используя данные пакета и явно указывая место установки для разделяемой библиотеки. Проблема, с которой я столкнулся при таком подходе, состоит в том, что общий объект отделен от расширения. В моем случае разделяемая библиотека и расширение являются целями, созданными одной и той же сборкой cmake. Я ранее пытался использовать skbuild создавать расширения на основе cmake; однако согласно Эта проблема, в skbuild есть похожая проблема с включением других библиотек, сгенерированных как часть сборки расширения.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]