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

В документе рассказывается, как писать модули на C или C++ для расширения интерпретатора 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 в более крупное приложение. В разделе описаны некоторые детали, необходимые для успешного выполнения данной задачи.