Repolode
pybind

pybind/pybind11

Biblioteca header-only para expor tipos e funções de C++ ao Python, principalmente para criar bindings Python para código C++ existente.

Estrelas
18,028
Forks
2,331
Issues abertas
716
Último commit
há 11 horas

O que é?

pybind11 é uma biblioteca leve, header-only, para expor tipos de C++ ao Python e vice-versa, principalmente para criar bindings Python para código C++ existente. Seus objetivos e sua sintaxe lembram o Boost.Python, mas ela elimina a dependência do Boost e usa apenas a Python C API e a biblioteca padrão do C++, aproveitando recursos do C++11 para inferir informações de tipos em tempo de compilação.

A biblioteca mapeia construções comuns do C++ para o Python: funções que recebem e retornam tipos personalizados por valor, referência ou ponteiro; classes com métodos e atributos; funções sobrecarregadas; exceções; enums; callbacks; iteradores; herança; containers da STL; e std::shared_ptr. Classes C++ com métodos virtuais podem ser estendidas em Python, e a integração com NumPy já vem incluída. Há suporte a CPython 3.9+, PyPy e GraalPy.

Como tudo fica em poucos headers, os projetos não precisam vincular bibliotecas extras. O README também apresenta exemplos de empacotamento com setuptools, scikit-build e CMake.

Recursos principais

  • 01Header-only, sem necessidade de vincular bibliotecas extras
  • 02Mapeia classes, sobrecargas, enums, exceções e containers da STL para o Python
  • 03Permite estender em Python classes C++ com métodos virtuais
  • 04Suporte integrado a NumPy e acesso ao buffer protocol
  • 05Compatível com CPython 3.9+, PyPy e GraalPy

Casos de uso

  • Criar um wrapper para uma biblioteca C++ existente e permitir que o código Python a utilize
  • Disponibilizar rotinas C++ críticas para o desempenho a scripts Python
  • Passar arrays NumPy entre código C++ e Python sem copiá-los

Início rápido

  1. 1

    Comece pelo projeto de exemplo do Setuptools vinculado no README

Antes de usar

  • Requer um compilador compatível com C++11 e CPython 3.9 ou superior, PyPy ou GraalPy.

Tópicos

Perguntas frequentes

O que é pybind11?
Biblioteca header-only para expor tipos e funções de C++ ao Python, principalmente para criar bindings Python para código C++ existente. pybind11 é uma biblioteca leve, header-only, para expor tipos de C++ ao Python e vice-versa, principalmente para criar bindings Python para código C++ existente. Seus objetivos e sua sintaxe lembram o Boost.Python, mas ela elimina a dependência do Boost e usa apenas a Python C API e a biblioteca padrão do C++, aproveitando recursos do C++11 para inferir informações de tipos em tempo de compilação.
pybind11 é gratuito? Qual é a licença?
pybind11 é open source sob a licença Other. Confira os termos da licença antes de usá-lo em produtos comerciais.
pybind11 ainda é mantido?
Manutenção ativa. O último commit de pybind11 foi em 24 de out. de 2026.
Para que posso usar pybind11?
Criar um wrapper para uma biblioteca C++ existente e permitir que o código Python a utilize Disponibilizar rotinas C++ críticas para o desempenho a scripts Python Passar arrays NumPy entre código C++ e Python sem copiá-los
Como instalar pybind11?
Comece pelo projeto de exemplo do Setuptools vinculado no README
Onde consigo pybind11?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/pybind/pybind11

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados