Spec-Zone.ru › Python 3.12

Расширение и встраивание интерпретатора 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++ расширений с помощью 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