Repolode
pybind

pybind/pybind11

기존 C++ 코드의 Python 바인딩을 만드는 데 주로 사용하는, C++ 타입과 함수를 Python에 노출하는 헤더 전용 C++11 라이브러리입니다.

스타
18,028
포크
2,331
열린 이슈
716
마지막 커밋
13시간 전

어떤 프로젝트인가요?

pybind11은 C++ 타입을 Python에, 그 반대로도 노출하는 경량 헤더 전용 라이브러리로, 주로 기존 C++ 코드의 Python 바인딩을 만드는 데 사용됩니다. 목표와 문법은 Boost.Python과 비슷하지만 Boost 의존성을 없애고 Python C API와 C++ 표준 라이브러리만 사용하며, C++11 기능을 활용해 컴파일 시점에 타입 정보를 추론합니다.

이 라이브러리는 값, 참조, 포인터로 사용자 정의 타입을 받거나 반환하는 함수, 메서드와 속성이 있는 클래스, 오버로드된 함수, 예외, enum, 콜백, 이터레이터, 상속, STL 컨테이너, std::shared_ptr 등 일반적인 C++ 구문을 Python에 매핑합니다. 가상 메서드가 있는 C++ 클래스는 Python에서 확장할 수 있고, NumPy 통합도 포함되어 있습니다. CPython 3.9+, PyPy, GraalPy를 지원합니다.

모든 코드가 몇 개의 헤더에 들어 있어 프로젝트에서 추가 링크 라이브러리가 필요하지 않습니다. README에는 setuptools, scikit-build, CMake를 사용하는 패키징 예제도 소개되어 있습니다.

핵심 기능

  • 01헤더 전용이므로 추가 라이브러리를 링크할 필요가 없습니다
  • 02클래스, 오버로드, enum, 예외, STL 컨테이너를 Python에 매핑합니다
  • 03가상 메서드가 있는 C++ 클래스를 Python에서 확장할 수 있습니다
  • 04NumPy 통합 및 버퍼 프로토콜 접근을 지원합니다
  • 05CPython 3.9+, PyPy, GraalPy를 지원합니다

활용 사례

  • 기존 C++ 라이브러리를 래핑해 Python 코드에서 호출
  • 성능이 중요한 C++ 루틴을 Python 스크립트에 노출
  • 복사 없이 C++ 코드와 Python 간에 NumPy 배열 전달

빠른 시작

  1. 1

    README에 링크된 Setuptools 예제 프로젝트부터 시작하세요

사용 전 알아둘 점

  • C++11을 지원하는 컴파일러와 CPython 3.9 이상, PyPy 또는 GraalPy가 필요합니다.

토픽

자주 묻는 질문

pybind11은(는) 무엇인가요?
기존 C++ 코드의 Python 바인딩을 만드는 데 주로 사용하는, C++ 타입과 함수를 Python에 노출하는 헤더 전용 C++11 라이브러리입니다. pybind11은 C++ 타입을 Python에, 그 반대로도 노출하는 경량 헤더 전용 라이브러리로, 주로 기존 C++ 코드의 Python 바인딩을 만드는 데 사용됩니다. 목표와 문법은 Boost.Python과 비슷하지만 Boost 의존성을 없애고 Python C API와 C++ 표준 라이브러리만 사용하며, C++11 기능을 활용해 컴파일 시점에 타입 정보를 추론합니다.
pybind11은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
pybind11은(는) Other 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
pybind11은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. pybind11의 마지막 커밋은 2026년 10월 24일입니다.
pybind11은(는) 어디에 사용할 수 있나요?
기존 C++ 라이브러리를 래핑해 Python 코드에서 호출 성능이 중요한 C++ 루틴을 Python 스크립트에 노출 복사 없이 C++ 코드와 Python 간에 NumPy 배열 전달
pybind11는 어떻게 설치하나요?
README에 링크된 Setuptools 예제 프로젝트부터 시작하세요
pybind11은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/pybind/pybind11

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트