Я пытаюсь создать пакет Python, который взаимодействует с кодом C++. Я создал оболочку PyBind11 для взаимодействия. Я создал файл setup.py, следуя инструкциям здесь:
Код: Выделить всё
from pybind11.setup_helpers import Pybind11Extension
ext_modules = [
Pybind11Extension(
"python_example",
sorted(glob("src/*.cpp")), # Sort source files for reproducibility
extra_link_args=[f"-Wl,-rpath,$ORIGIN"]
),
]
setup(..., ext_modules=ext_modules)
Я установил extra_link_args=[f"-Wl,-rpath,$ORIGIN"], поскольку я понимаю, что это встроит источник в путь поиска собственных библиотек. (Я тоже пробовал без него, но безуспешно). Мой модуль C++ зависит от общей библиотеки, которую я помещаю рядом с __init__.py. Но когда я пытаюсь импортировать свой модуль C++, я получаю:
Код: Выделить всё
ImportError: libxxx: cannot open shared object file: No such file or directory
структура моего проекта после установки с использованием PIP Install. похоже на это:
Код: Выделить всё
$ ls venv/lib/python3.10/site-packages/my_package
__init__.py __pycache__ libxxx.so
Как исправить ошибку?
Подробнее здесь:
https://stackoverflow.com/questions/793 ... -directory