Об этом проекте
pybind11 — это легковесная header-only библиотека на C++, обеспечивающая бесшовное взаимодействие между C++ и Python. Она в основном используется для создания Python-биндингов существующего кода на C++, предоставляя типы C++ в Python и наоборот. Проект был создан как более компактная и самодостаточная альтернатива Boost.Python, избегающая большой зависимости от Boost за счёт использования возможностей C++11, таких как кортежи, лямбда-функции и вариативные шаблоны.
Библиотека поддерживает отображение широкого спектра возможностей C++ в Python, включая функции с пользовательскими структурами данных, методы экземпляра и статические методы, перегруженные функции, атрибуты, исключения, перечисления, обратные вызовы, итераторы, пользовательские операторы, наследование, контейнеры STL, умные указатели и расширение виртуальных методов из Python. Она также предоставляет встроенную поддержку NumPy, автоматическую векторизацию функций по массивам NumPy, доступ к буферному протоколу для эффективной передачи данных, доступ на основе срезов и поддержку pickle для типов C++.
pybind11 работает с CPython 3.9+, PyPy3 и GraalPy через интерфейс, не зависящий от реализации. Библиотека состоит всего из нескольких заголовочных файлов и не требует связывания с дополнительными библиотеками. Документация доступна на pybind11.readthedocs.io, с примерами интеграции с setuptools, scikit-build и CMake. Проект распространяется под лицензией в стиле BSD и доступен на PyPI и conda-forge.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.