Расширение и встраивание интерпретатора 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.
- 1. Расширение Python с помощью C или C++
- 1.1. Простой пример
- 1.2. Интермеццо: ошибки и исключения
- 1.3. Вернемся к примеру
- 1.4. Таблица методов модуля и функция инициализации
- 1.5. Компиляция и линковка
- 1.6. Вызов функций Python из C
- 1.7. Извлечение параметров в функциях расширения
- 1.8. Ключевые параметры для функций расширения
- 1.9. Построение произвольных значений
- 1.10. Ссылочные счетчики
- 1.11. Запись расширений на языке C++
- 1.12. Предоставление C API для модуля расширения
- 2. Определение типов расширений: учебник
- 3. Определение типов расширений: ассортированные темы
- 4. Сборка C и C++ расширений
- 5. Создание расширений C и C++ в Windows
Встраивание среды выполнения CPython в более крупное приложение¶
Иногда вместо создания расширения, которое выполняется внутри Python интерпретатора в качестве основного приложения, желательно вместо этого встроить среду выполнения CPython в более крупное приложение. В этом разделе рассматриваются некоторые детали, связанные с успешным выполнением этой задачи.