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