Spec-Zone.ru › Python 3.12

Расширение и встраивание интерпретатора Python

В этом документе описано, как писать модули на C или C++, расширяющие интерпретатор Python новыми модулями. Такие модули могут определять не только новые функции, но и новые типы объектов и их методы. В документе также описано, как встроить интерпретатор Python в другое приложение и использовать его в качестве языка расширения. Наконец, здесь показано, как компилировать и компоновать модули расширения, чтобы их можно было динамически загружать (во время выполнения) в интерпретатор, если базовая операционная система поддерживает эту возможность.

Предполагается, что читатель обладает базовыми знаниями о Python. Неформальное введение в язык см. в учебнике по Python. Более формальное определение языка приведено в справочнике по языку Python. В стандартной библиотеке Python описаны существующие типы объектов, функции и модули (как встроенные, так и написанные на Python), благодаря которым язык имеет широкую область применения.

Подробное описание всего Python/C API приведено в отдельном справочном руководстве по Python/C API.

Рекомендуемые сторонние инструменты

В этом руководстве рассматриваются только базовые инструменты для создания расширений, входящие в состав данной версии CPython. Сторонние инструменты, такие как Cython, cffi, SWIG и Numba, предлагают как более простые, так и более продвинутые подходы к созданию расширений для Python на C и C++.

См. также

Руководство пользователя по упаковке 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. Определение типов расширения: учебное руководство
    • 2.1. Основы
    • 2.2. Добавление данных и методов в базовый пример
    • 2.3. Более тонкое управление атрибутами данных
    • 2.4. Поддержка циклического сбора мусора
    • 2.5. Создание подклассов других типов
  • 3. Определение типов расширения: разные темы
    • 3.1. Завершение работы и освобождение памяти
    • 3.2. Представление объектов
    • 3.3. Управление атрибутами
    • 3.4. Сравнение объектов
    • 3.5. Поддержка абстрактных протоколов
    • 3.6. Поддержка слабых ссылок
    • 3.7. Дополнительные рекомендации
  • 4. Сборка расширений на C и C++
    • 4.1. Сборка расширений на C и C++ с помощью setuptools
  • 5. Сборка расширений на C и C++ в Windows
    • 5.1. Практический подход
    • 5.2. Различия между Unix и Windows
    • 5.3. Практическое использование DLL

Встраивание среды выполнения CPython в более крупное приложение

Иногда вместо создания расширения, работающего внутри интерпретатора Python в качестве основного приложения, желательно встроить среду выполнения CPython в более крупное приложение. В этом разделе рассматриваются некоторые подробности, необходимые для успешного выполнения этой задачи.

  • 1. Встраивание Python в другое приложение
    • 1.1. Встраивание на очень высоком уровне
    • 1.2. За пределами встраивания на очень высоком уровне: обзор
    • 1.3. Чистое встраивание
    • 1.4. Расширение встроенного Python
    • 1.5. Встраивание Python в C++
    • 1.6. Компиляция и компоновка в Unix-подобных системах

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/extending/index.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API