Расширение и встраивание интерпретатора Python
В данном документе описывается, как создавать модули на C или C++, чтобы расширить интерпретатор Python новыми модулями. Эти модули могут определять не только новые функции, но и новые типы объектов и их методы. Также в документе описано, как встраивать интерпретатор Python в другое приложение, используя его как язык расширения. Наконец, показано, как компилировать и линкуть расширяющие модули, чтобы их можно было динамически загружать (во время выполнения) в интерпретатор, если операционная система поддерживает эту функцию.
Данный документ предполагает базовые знания Python. Для неофициального знакомства с языком, см. Руководство по Python. Справочник по языку Python даёт более формальное определение языка. Стандартная библиотека Python документирует существующие типы объектов, функции и модули (как встроенные, так и написанные на Python), которые обеспечивают широкий спектр применения языка.
Подробное описание всего API Python/C см. в отдельном Справочнике по API Python/C.
Рекомендуемые сторонние инструменты
В данном руководстве рассматриваются только базовые инструменты для создания расширений, предоставляемые в данной версии 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-времени выполнения в большее приложение. Этот раздел охватывает некоторые подробности, связанные с успешным выполнением этой задачи.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/extending/index.html