Содержание страницы
Расширение и встраивание интерпретатора Python¶Extending and Embedding the Python Interpreter
В этом документе описывается, как писать модули на C или C++ для расширения Python интерпретатора новыми модулями. Такие модули могут не только определять новые функции но и новые типы объектов и их методы. В документе также описывается, как встроить интерпретатор Python в другое приложение для использования в качестве языка расширения. Наконец, показано, как компилировать и компоновать модули расширения, чтобы их можно было динамически загружать (во время выполнения) в интерпретатор, если базовая операционная система поддерживает эту возможность.
В этом документе предполагается базовое знание Python. Для неформального введения в язык, см. Руководство по Python. Справочник по языку Python дает более формальное определение языка. Стандартная библиотека Python документирует существующие типы объектов, функции и модули (как встроенные, так и написанные на Python), которые обеспечивают широкий спектр применения языка.
За подробным описанием всего Python/C API см. отдельное Справочное руководство по Python/C API.
Рекомендуемые сторонние инструменты¶Recommended third party tools
Руководство охватывает только основные инструменты для создания расширений, поставляемые в составе этой версии CPython. Сторонние инструменты, такие как Cython, cffi, SWIG и Numba, предлагают как более простые, так и более сложные подходы к созданию C и C++ расширений для Python.
См. также
- Руководство пользователя по упаковке Python: Бинарные расширения
- Руководство пользователя по упаковке Python (Python Packaging User Guide) не только охватывает несколько доступных инструментов, упрощающих создание двоичных расширений, но и обсуждает различные причины, по которым создание модуля расширения может быть желательным в первую очередь.
Создание расширений без сторонних инструментов¶Creating extensions without third party tools
Этот раздел руководства охватывает создание C- и C++-расширений без использования сторонних инструментов. Он предназначен в первую очередь для создателей таких инструментов, а не как рекомендуемый способ создания собственных C-расширений.
- 1. Расширение Python с помощью C или C++Extending Python with C or C++
- 1.1. Простой примерA Simple Example
- 1.2. Интермеццо: ошибки и исключенияIntermezzo: Errors and Exceptions
- 1.3. Возвращение к примеруBack to the Example
- 1.4. Таблица методов модуля и функция инициализацииThe Module’s Method Table and Initialization Function
- 1.5. Компиляция и компоновкаCompilation and Linkage
- 1.6. Вызов функций Python из CCalling Python Functions from C
- 1.7. Извлечение параметров в функциях расширенияExtracting Parameters in Extension Functions
- 1.8. Именованные параметры для функций расширенияKeyword Parameters for Extension Functions
- 1.9. Построение произвольных значенийBuilding Arbitrary Values
- 1.10. Счетчики ссылокReference Counts
- 1.11. Написание расширений на C++Writing Extensions in C++
- 1.12. Предоставление C API для модуля расширенияProviding a C API for an Extension Module
- 2. Определение новых типовDefining New Types
- 3. Сборка расширений на C и C++ с помощью distutilsBuilding C and C++ Extensions with distutils
- 4. Сборка расширений C и C++ в WindowsBuilding C and C++ Extensions on Windows
Встраивание среды выполнения CPython в более крупное приложение¶Embedding the CPython runtime in a larger application
Иногда вместо создания расширения, работающего внутри интерпретатора Python как основного приложения, желательно встроить среду выполнения CPython в более крупное приложение. В этом разделе рассматриваются некоторые детали, необходимые для успешного выполнения этой задачи.
- 1. Встраивание Python в другое приложениеEmbedding Python in Another Application
- 1.1. Встраивание на очень высоком уровнеVery High Level Embedding
- 1.2. За пределами встраивания на очень высоком уровне: обзорBeyond Very High Level Embedding: An overview
- 1.3. Чистое встраиваниеPure Embedding
- 1.4. Расширение встроенного PythonExtending Embedded Python
- 1.5. Встраивание Python в C++Embedding Python in C++
- 1.6. Компиляция и компоновка в Unix-подобных системахCompiling and Linking under Unix-like systems