Документация Python неофициальный перевод
Содержание страницы

Расширение и встраивание интерпретатора PythonExtending and Embedding the Python Interpreter

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

Предполагается, что читатель обладает базовыми знаниями C и Python. Для неформального введения в Python см. Python Tutorial. Справочник по языку Python даёт более формальное определение языка. Стандартная библиотека Python документирует существующие типы объектов, функции и модули (как встроенные, так и написанные на Python), которые обеспечивают языку широкий спектр применения.

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

Для поддержки расширений C API Python (интерфейс прикладного программирования) определяет набор функций, макросов и переменных, обеспечивающих доступ к большинству аспектов системы времени выполнения Python. Python API подключается в C-исходном файле включением заголовочного файла "Python.h".

Примечание

Интерфейс расширений на C специфичен для CPython, и модули расширения не работают в других реализациях Python. Во многих случаях можно избежать написания C-расширений и сохранить переносимость на другие реализации. Например, если ваша задача – вызов функций библиотек C или системных вызовов, стоит рассмотреть использование модуля ctypes или библиотеки cffi вместо написания собственного кода на C. Эти модули позволяют писать код на Python для взаимодействия с C-кодом и более переносимы между реализациями Python, чем написание и компиляция модуля расширения на C.

Учебник по C APIC API Tutorial

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

  1. Первый модуль расширения C APIYour first C API extension module

Руководства по промежуточным темамGuides for intermediate topics

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

Встраивание среды выполнения CPython в более крупное приложениеEmbedding the CPython runtime in a larger application

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