mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00

Co-authored-by: Petr Viktorin <encukou@gmail.com> Co-authored-by: Steve Dower <steve.dower@python.org>
68 lines
2.4 KiB
ReStructuredText
68 lines
2.4 KiB
ReStructuredText
.. _extending-index:
|
|
|
|
##################################################
|
|
Extending and Embedding the Python Interpreter
|
|
##################################################
|
|
|
|
This document describes how to write modules in C or C++ to extend the Python
|
|
interpreter with new modules. Those modules can not only define new functions
|
|
but also new object types and their methods. The document also describes how
|
|
to embed the Python interpreter in another application, for use as an extension
|
|
language. Finally, it shows how to compile and link extension modules so that
|
|
they can be loaded dynamically (at run time) into the interpreter, if the
|
|
underlying operating system supports this feature.
|
|
|
|
This document assumes basic knowledge about Python. For an informal
|
|
introduction to the language, see :ref:`tutorial-index`. :ref:`reference-index`
|
|
gives a more formal definition of the language. :ref:`library-index` documents
|
|
the existing object types, functions and modules (both built-in and written in
|
|
Python) that give the language its wide application range.
|
|
|
|
For a detailed description of the whole Python/C API, see the separate
|
|
:ref:`c-api-index`.
|
|
|
|
|
|
Recommended third party tools
|
|
=============================
|
|
|
|
This guide only covers the basic tools for creating extensions provided
|
|
as part of this version of CPython. Some :ref:`third party tools
|
|
<c-api-tools>` offer both simpler and more sophisticated approaches to creating
|
|
C and C++ extensions for Python.
|
|
|
|
|
|
Creating extensions without third party tools
|
|
=============================================
|
|
|
|
This section of the guide covers creating C and C++ extensions without
|
|
assistance from third party tools. It is intended primarily for creators
|
|
of those tools, rather than being a recommended way to create your own
|
|
C extensions.
|
|
|
|
.. seealso::
|
|
|
|
:pep:`489` -- Multi-phase extension module initialization
|
|
|
|
.. toctree::
|
|
:maxdepth: 2
|
|
:numbered:
|
|
|
|
extending.rst
|
|
newtypes_tutorial.rst
|
|
newtypes.rst
|
|
building.rst
|
|
windows.rst
|
|
|
|
Embedding the CPython runtime in a larger application
|
|
=====================================================
|
|
|
|
Sometimes, rather than creating an extension that runs inside the Python
|
|
interpreter as the main application, it is desirable to instead embed
|
|
the CPython runtime inside a larger application. This section covers
|
|
some of the details involved in doing that successfully.
|
|
|
|
.. toctree::
|
|
:maxdepth: 2
|
|
:numbered:
|
|
|
|
embedding.rst
|