포맷 출력과 비동기 모드를 지원하고 파일 순환, 콘솔, syslog 등 다양한 싱크로 로그를 기록하는 고성능 C++ 로깅 라이브러리입니다.
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
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 통계는 매일 갱신됩니다.
관련 프로젝트
블로킹 소켓 I/O로 HTTP/HTTPS 서버와 클라이언트를 구축할 수 있는 C++11 단일 헤더 라이브러리입니다.
문자열에서 float, double, 정수 값을 빠르고 정확하게 파싱하는 헤더 전용 C++ 라이브러리로, from_chars를 바로 대체해 사용할 수 있습니다.
C++ 코드에서 STL과 비슷한 문법으로 JSON을 파싱하고 생성·조작·직렬화할 수 있는 헤더 전용 C++11 라이브러리입니다.
C stdio와 iostreams보다 빠르고 타입 안전한 대안을 제공하며 C++20 std::format을 구현한 C++ 포맷팅 라이브러리입니다.
주제별로 구성된 무료 오픈소스 책이자 웹사이트로, C++11부터 C++26까지의 모던 C++ 기능을 다룹니다.