Repolode
pybind

pybind/pybind11

Библиотека C++11 только из заголовочных файлов для предоставления типов и функций C++ в Python, прежде всего для создания Python-привязок к существующему коду на C++.

Звёзды
18,028
Форки
2,331
Открытые issues
716
Последний коммит
11 часов назад

Что это?

pybind11 — лёгкая библиотека только из заголовочных файлов, которая позволяет предоставлять типы C++ в Python и наоборот; в первую очередь она предназначена для создания Python-привязок к существующему коду на C++. Её цели и синтаксис похожи на Boost.Python, но она не зависит от Boost и использует только Python C API и стандартную библиотеку C++, применяя возможности C++11 для определения информации о типах во время компиляции.

Библиотека сопоставляет распространённые конструкции C++ с Python: функции, принимающие и возвращающие пользовательские типы по значению, ссылке или указателю; классы с методами и атрибутами; перегруженные функции, исключения, перечисления, callback-функции, итераторы, наследование, контейнеры STL и std::shared_ptr. Классы C++ с виртуальными методами можно расширять в Python; также предусмотрена интеграция с NumPy. Поддерживаются CPython 3.9+, PyPy и GraalPy.

Поскольку библиотека целиком размещена в нескольких заголовочных файлах, проектам не нужны дополнительные библиотеки для компоновки. В README также приведены примеры упаковки с помощью setuptools, scikit-build и CMake.

Ключевые возможности

  • 01Библиотека состоит только из заголовочных файлов, поэтому дополнительные библиотеки для компоновки не нужны
  • 02Сопоставляет классы, перегруженные функции, перечисления, исключения и контейнеры STL с Python
  • 03Позволяет расширять в Python классы C++ с виртуальными методами
  • 04Встроенная поддержка NumPy и доступ к буферному протоколу
  • 05Поддерживает CPython 3.9+, PyPy и GraalPy

Сценарии использования

  • Создание обёртки над существующей библиотекой C++, чтобы вызывать её из Python
  • Предоставление ресурсоёмких вычислений на C++ для Python-скриптов
  • Передача массивов NumPy между кодом на C++ и Python без копирования

Быстрый старт

  1. 1

    Начните с примера проекта Setuptools, ссылка на который приведена в README

Что важно знать

  • Требуется компилятор с поддержкой C++11 и CPython 3.9 или новее, PyPy либо GraalPy.

Темы

Частые вопросы

Что такое pybind11?
Библиотека C++11 только из заголовочных файлов для предоставления типов и функций C++ в Python, прежде всего для создания Python-привязок к существующему коду на C++. pybind11 — лёгкая библиотека только из заголовочных файлов, которая позволяет предоставлять типы C++ в Python и наоборот; в первую очередь она предназначена для создания Python-привязок к существующему коду на C++. Её цели и синтаксис похожи на Boost.Python, но она не зависит от Boost и использует только Python C API и стандартную библиотеку C++, применяя возможности C++11 для определения информации о типах во время компиляции.
pybind11 можно использовать бесплатно? Какая у него лицензия?
pybind11 распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
pybind11 всё ещё поддерживается?
Активно поддерживается. Последний коммит в pybind11 — 24 окт. 2026 г..
Для чего можно использовать pybind11?
Создание обёртки над существующей библиотекой C++, чтобы вызывать её из Python Предоставление ресурсоёмких вычислений на C++ для Python-скриптов Передача массивов NumPy между кодом на C++ и Python без копирования
Как установить pybind11?
Начните с примера проекта Setuptools, ссылка на который приведена в README
Где скачать pybind11?
Исходный код и инструкции по установке — на GitHub: https://github.com/pybind/pybind11

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты