Быстрая библиотека логирования для C++ с форматированным выводом, асинхронным режимом и разными приемниками, включая ротируемые файлы, консоль и syslog.
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
Начните с примера проекта 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 обновляется ежедневно.
Похожие проекты
Однофайловая библиотека на C++11 для создания HTTP/HTTPS-серверов и клиентов с блокирующим вводом-выводом через сокеты.
Header-only библиотека C++ для быстрого и точного разбора строк в float, double и целые числа; drop-in-реализация from_chars.
Библиотека C++11, состоящая из одного заголовочного файла и позволяющая разбирать, создавать, изменять и сериализовать JSON с синтаксисом в духе STL.
Библиотека форматирования C++ — быстрая и типобезопасная альтернатива C stdio и iostreams с поддержкой C++20 std::format.
Бесплатная книга с открытым исходным кодом и сайт, где по темам разбираются возможности современного C++ от C++11 до C++26.