# 파이썬 인터프리터 확장 및 내장

이 문서는 새로운 모듈로 파이썬 인터프리터를 확장하기 위해 C 나 C++로 모듈을 작성하는 방법을 설명합니다. 이러한 모듈은 새로운 함수뿐만 아니라 새로운 객체 형과 메서드를 정의할 수 있습니다. 또한, 확장 언어로 사용하기 위해, 파이썬 인터프리터를 다른 응용 프로그램에 내장시키는 방법에 관해서도 설명합니다. 마지막으로, 하부 운영 체제에서 이 기능을 지원하는 경우, 동적으로 (실행시간에) 인터프리터에 로드될 수 있도록 확장 모듈을 컴파일하고 링크하는 방법을 보여줍니다.

이 문서는 파이썬에 대한 기본 지식을 전제로 합니다. 언어에 대한 형식적이지 않은 소개는 파이썬 자습서 를 보십시오. 파이썬 언어 레퍼런스 는 보다 형식적인 언어 정의를 제공합니다. 파이썬 표준 라이브러리 는 존재하는 객체 형, 함수 및 모듈(내장된 것과 파이썬으로 작성된 것 모두)을 설명하는데, 이것들이 언어의 응용 범위를 넓힙니다.

전체 파이썬/C API에 대한 자세한 설명은 별도의 파이썬/C API 레퍼런스 설명서 를 참조하십시오.

## 권장 제삼자 도구

이 지침서는 이 버전의 CPython의 일부로 제공되는, 확장을 만들기 위한 기본 도구만을 다룹니다. Cython, cffi, SWIG 와 Numba 와 같은 제삼자 도구는 파이썬을 위한 C와 C++ 확장을 만드는 더 간단하고 세련된 접근법을 제공합니다.

더 보기

파이썬 패키징 사용자 지침서: 바이너리 확장

  파이썬 패키징 사용자 지침서는 바이너리 확장의 생성을 단순화하는 몇 가지 사용 가능한 도구를 다루고 있을 뿐만 아니라, 확장 모듈을 만드는 것이 왜 바람직한지 여러 가지 이유에 대해서도 논의합니다.

## 제삼자 도구 없이 확장 만들기

지침서의 이 부문에서는 제삼자 도구의 도움 없이 C와 C++ 확장을 만드는 방법에 관해 설명합니다. 여러분 자신의 C 확장을 만드는 데 권장되는 방법이라기보다는, 주로 도구를 제작하는 사람들을 대상으로 합니다.

- 1. Extending Python with C or C++
  - 1.1. A Simple Example
  - 1.2. Intermezzo: Errors and Exceptions
  - 1.3. Back to the Example
  - 1.4. The Module’s Method Table and Initialization Function
  - 1.5. Compilation and Linkage
  - 1.6. Calling Python Functions from C
  - 1.7. Extracting Parameters in Extension Functions
  - 1.8. Keyword Parameters for Extension Functions
  - 1.9. Building Arbitrary Values
  - 1.10. Reference Counts
  - 1.11. Writing Extensions in C++
  - 1.12. Providing a C API for an Extension Module
- 2. Defining Extension Types: Tutorial
  - 2.1. The Basics
  - 2.2. Adding data and methods to the Basic example
  - 2.3. Providing finer control over data attributes
  - 2.4. Supporting cyclic garbage collection
  - 2.5. Subclassing other types
- 3. Defining Extension Types: Assorted Topics
  - 3.1. Finalization and De-allocation
  - 3.2. Object Presentation
  - 3.3. Attribute Management
  - 3.4. Object Comparison
  - 3.5. Abstract Protocol Support
  - 3.6. Weak Reference Support
  - 3.7. More Suggestions
- 4. C와 C++ 확장 빌드하기
  - 4.1. distutils로 C와 C++ 확장 빌드하기
  - 4.2. 확장 모듈 배포하기
- 5. 윈도우에서 C와 C++ 확장 빌드하기
  - 5.1. 요리책 접근법
  - 5.2. 유닉스와 윈도우의 차이점
  - 5.3. DLL을 실제로 사용하기

## 더 큰 응용 프로그램에 CPython 런타임을 내장하기

때로는, 파이썬 인터프리터를 메인 응용 프로그램으로 사용하고 그 안에서 실행되는 확장을 만드는 대신, CPython 런타임을 더 큰 응용 프로그램에 내장하는 것이 바람직합니다. 이 절에서는 이를 성공적으로 수행하는 데 관련된 몇 가지 세부 사항에 관해 설명합니다.

- 1. 다른 응용 프로그램에 파이썬 내장하기
  - 1.1. 매우 고수준의 내장
  - 1.2. 매우 고수준 내장을 넘어서: 개요
  - 1.3. 순수한 내장
  - 1.4. 내장된 파이썬을 확장하기
  - 1.5. C++로 파이썬 내장하기
  - 1.6. 유닉스 계열 시스템에서 컴파일과 링크하기