Расширение и встраивание интерпретатора Python¶
В документе рассказывается, как писать модули на C или C++ для расширения интерпретатора Python новыми модулями. Данные модули могут не только определять новые функции, но также новые типы объектов и их методы. В документе также определяется, как встроить интерпретатор Python в другое приложение для использования в качестве языка расширения. В завершении, он показывает, как компилировать и связывать модули расширения, чтобы их можно было динамически загружать (во время выполнения) в интерпретатор, если соответствующая операционная система поддерживает эту функцию.
Данный документ предполагает базовые знания о Python. Для неформального знакомства с языком см. Учебник. Справочник по языку предоставляет более формальное определение языка. Справочник по библиотеке документирует существующие типы объектов, функции и модули (как встроенные, так и написанные на Python), которые дают языку широкий диапазон применения.
Подробное описание всего API Python/C см. в отдельном документе Python/C API.
Рекомендуемые сторонние инструменты¶
В этом руководстве рассматриваются только основные инструменты для создания расширений, предоставляемые как часть данной версии CPython. Сторонние инструменты, такие как Cython, cffi, SWIG и Numba, предлагают как более простые, так и более сложные подходы к созданию расширений C и C++ для Python.
См.также
- Руководство пользователя по упаковке Python: двоичные расширения
- Руководство пользователя Python Packaging не только охватывает несколько доступных инструментов, которые упрощают создание двоичных расширений, но также обсуждают различные причины, по которым создание модуля расширения может быть желательным в первую очередь.
Создание расширений без сторонних инструментов¶
В этом разделе руководства рассматривается создание расширений 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 в более крупное приложение. В этом разделе описаны некоторые детали, необходимые для успешного выполнения этой задачи.