Spec-Zone.ru › Python 3.8

Расширение и встраивание интерпретатора 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–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/extending/index.html

Spec-Zone.ru

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