Spec-Zone.ru › Python 3.11

Расширение и внедрение интерпретатора 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. Определение типов расширений: Руководство
    • 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.11/extending/index.html

Spec-Zone.ru

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