Расширение и встраивание интерпретатора Python

В этом документе описывается, как писать модули на C или C++, чтобы расширить Python интерпретатор новыми модулями. Эти модули могут определять не только новые функции, но и новые типы объектов и их методы. В документе также описывается встраивание Python интерпретатора в другое приложение для использования в качестве языка расширения. Наконец, в нем показано, как компилировать и связывать модули расширения так, чтобы их можно было динамически загружать (во время выполнения) в интерпретатора, если базовая операционная система поддерживает эту функцию.

В этом документе предполагается наличие базовых знаний о Python. Неформальное введение в язык см. в разделе Учебник по Python. Справочник по языку Python дает более формальное определение языка. Стандартная библиотека Python документирует существующие типы объектов, функции и модули (встроенные и написанные на Python языке), которые предоставляют языку широкий диапазон приложений.

Подробное описание всего API Python/C см. в отдельном Справочное руководство по Python/C API.

Рекомендуемые сторонние инструменты

В данном руководстве рассматриваются только основные средства создания расширений, предоставляемые в рамках данной версии CPython. Сторонние инструменты, такие как Cython, cffi, SWIG и Numba, предлагают более простые и сложные подходы к созданию расширений C и C++ для Python.

См.также

Руководство пользователя пакетизации Python: двоичные расширения
Руководство пользователя по упаковке Python не только охватывает несколько доступных инструментов, которые упрощают создание двоичных расширений, но также обсуждает различные причины, по которым создание модуля расширения может быть желательно в первую очередь.

Создание расширений без сторонних инструментов

В этом разделе руководства рассматривается создание расширений C и C++ без помощи сторонних инструментов. Он предназначен в первую очередь для создателей этих инструментов, а не является рекомендуемым способом создания собственных расширений C.

Встраивание среды выполнения CPython в более крупное приложение

Иногда вместо создания расширения, которое выполняется внутри Python интерпретатора в качестве основного приложения, желательно вместо этого встроить среду выполнения CPython в более крупное приложение. В этом разделе рассматриваются некоторые детали, связанные с успешным выполнением этой задачи.