Spec-Zone.ru › Python 3.13

Расширение и встраивание интерпретатора 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.13/extending/index.html

Spec-Zone.ru

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