Содержание страницы
Расширение и встраивание интерпретатора Python¶Extending 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.
Рекомендуемые сторонние инструменты¶Recommended third party tools
В этом документе описаны только базовые средства создания расширений, входящие в состав этой версии CPython. Некоторые сторонние инструменты предлагают как более простые, так и более сложные подходы к созданию C- и C++-расширений для Python.
Хотя этот документ предназначен для авторов расширений, он будет полезен и авторам таких инструментов. Например, учебный модуль может служить простым тестовым примером для системы сборки или ожидаемым выводом генератора кода.
Учебник по C API¶C API Tutorial
В этом учебнике описывается, как написать простой модуль на C или C++, используя Python C API – то есть базовые средства, входящие в состав этой версии CPython.
Первый модуль расширения C APIYour first C API extension module
Руководства по промежуточным темам¶Guides for intermediate topics
Этот раздел руководства охватывает создание C- и C++-расширений без использования сторонних инструментов. Он предназначен в первую очередь для создателей таких инструментов, а не как рекомендуемый способ создания собственных C-расширений.
Использование C API: различные темыUsing the C API: Assorted topics
Определение типов расширений: учебникDefining Extension Types: Tutorial
Определение типов расширений: различные темыDefining Extension Types: Assorted Topics
Сборка C- и C++-расширенийBuilding C and C++ Extensions
Сборка C- и C++-расширений в WindowsBuilding C and C++ Extensions on Windows
Встраивание среды выполнения CPython в более крупное приложение¶Embedding the CPython runtime in a larger application
Иногда вместо создания расширения, работающего внутри интерпретатора Python как основного приложения, желательно встроить среду выполнения CPython в более крупное приложение. В этом разделе рассматриваются некоторые детали, необходимые для успешного выполнения этой задачи.
Встраивание Python в другое приложениеEmbedding Python in Another Application