파이썬 인터프리터 확장 및 내장¶
이 문서는 새로운 모듈로 파이썬 인터프리터를 확장하기 위해 C나 C++로 모듈을 작성하는 방법을 설명합니다. 이러한 모듈은 파이썬 코드가 하는 것(함수, 객체형 및 메서드 정의)을 할 수 있을 뿐만 아니라, 네이티브 라이브러리와 상호 작용하거나 인터프리터 오버헤드를 피함으로써 더 나은 성능을 달성할 수도 있습니다. 또한, 확장 언어로 사용하기 위해 파이썬 인터프리터를 다른 애플리케이션에 내장시키는 방법을 설명합니다. 마지막으로, 하부 운영 체제가 이 기능을 지원하는 경우, 동적으로 (실행 시간) 인터프리터에 로드될 수 있도록 확장 모듈을 컴파일하고 링크하는 방법을 보여줍니다.
이 문서는 C와 Python에 대한 기본 지식을 전제로 합니다. Python에 대한 비공식적인 소개는 파이썬 자습서 를 참고하십시오. 파이썬 언어 레퍼런스 는 언어에 대한 더 공식적인 정의를 제공합니다. 파이썬 표준 라이브러리 는 언어의 광범위한 응용 범위를 제공하는 기존 객체형, 함수 및 모듈(내장된 것과 Python으로 작성된 것 모두)을 문서화합니다.
전체 파이썬/C API에 대한 자세한 설명은 별도의 Python/C API 참조 설명서 를 참조하십시오.
확장을 지원하기 위해, Python의 C API(Application Programmers Interface)는 Python 런타임 시스템의 대부분 측면에 액세스할 수 있는 함수, 매크로 및 변수 집합을 정의합니다. Python API는 헤더 "Python.h" 를 포함하여 C 소스 파일에 통합됩니다.
참고
C 확장 인터페이스는 CPython 전용이며, 확장 모듈은 다른 Python 구현에서는 작동하지 않습니다. 많은 경우, C 확장을 작성하는 것을 피하고 다른 구현에 대한 이식성을 유지할 수 있습니다. 예를 들어, 사용 사례가 C 라이브러리 함수나 시스템 호출을 호출하는 것이라면, 사용자 정의 C 코드를 작성하는 대신 ctypes 모듈이나 cffi 라이브러리 사용을 고려해야 합니다. 이 모듈들은 C 코드와 인터페이스하기 위해 Python 코드를 작성할 수 있게 해주며, C 확장 모듈을 작성하고 컴파일하는 것보다 구현별로 더 이식성이 높습니다.
권장 제삼자 도구¶
이 문서는 이 버전의 CPython의 일부로 제공되는, 확장 생성을 위한 기본적인 도구만을 다룹니다. 일부 third party tools 는 Python을 위한 C와 C++ 확장 생성을 더 간단하고 세련된 접근 방식을 모두 제공합니다.
이 문서는 확장 작성자를 대상으로 하지만, 그러한 도구의 작성자에게도 도움이 되어야 합니다. 예를 들어, 튜토리얼 모듈은 빌드 도구의 간단한 테스트 케이스나 코드 생성기의 예상 출력 샘플 역할을 할 수 있습니다.
C API 튜토리얼¶
이 튜토리얼은 Python C API를 사용하여 C나 C++로 간단한 모듈을 작성하는 방법을 설명합니다. 즉, 이 버전의 CPython에 포함된 기본 도구를 사용하는 방법입니다.
중간 레벨 주제 가이드¶
지침서의 이 부문에서는 제삼자 도구의 도움 없이 C와 C++ 확장을 만드는 방법에 관해 설명합니다. 여러분 자신의 C 확장을 만드는 데 권장되는 방법이라기보다는, 주로 도구를 제작하는 사람들을 대상으로 합니다.
더 큰 응용 프로그램에 CPython 런타임을 내장하기¶
때로는, 파이썬 인터프리터를 메인 응용 프로그램으로 사용하고 그 안에서 실행되는 확장을 만드는 대신, CPython 런타임을 더 큰 응용 프로그램에 내장하는 것이 바람직합니다. 이 절에서는 이를 성공적으로 수행하는 데 관련된 몇 가지 세부 사항에 관해 설명합니다.