Spec-Zone.ru › Python 3.10

Расширение и встраивание интерпретатора 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. Предоставление API C для модуля расширения
  • 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++ с помощью distutils
    • 4.2. Распространение модулей расширения
  • 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–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.10/extending/index.html

Spec-Zone.ru

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