2007-08-15 11:28:22 -03:00
|
|
|
.. _extending-index:
|
|
|
|
|
|
|
|
##################################################
|
|
|
|
Extending and Embedding the Python Interpreter
|
|
|
|
##################################################
|
|
|
|
|
|
|
|
This document describes how to write modules in C or C++ to extend the Python
|
2013-10-06 13:36:34 -03:00
|
|
|
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.
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
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`.
|
|
|
|
|
2013-12-10 07:24:55 -04:00
|
|
|
|
2014-03-13 09:13:45 -03:00
|
|
|
Recommended third party tools
|
|
|
|
=============================
|
2013-12-10 07:24:55 -04:00
|
|
|
|
2014-03-13 09:13:45 -03:00
|
|
|
This guide only covers the basic tools for creating extensions provided
|
|
|
|
as part of this version of CPython. Third party tools like Cython,
|
|
|
|
``cffi``, SWIG and Numba offer both simpler and more sophisticated
|
|
|
|
approaches to creating C and C++ extensions for Python.
|
|
|
|
|
|
|
|
.. seealso::
|
|
|
|
|
|
|
|
`Python Packaging User Guide: Binary Extensions <https://packaging.python.org/en/latest/extensions.html>`_
|
|
|
|
The Python Packaging User Guide not only covers several available
|
|
|
|
tools that simplify the creation of binary extensions, but also
|
|
|
|
discusses the various reasons why creating an extension module may be
|
|
|
|
desirable in the first place.
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
2013-12-10 07:24:55 -04:00
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
.. toctree::
|
|
|
|
:maxdepth: 2
|
Merged revisions 70578,70599,70641-70642,70650,70660-70661,70674,70691,70697-70698,70700,70704 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r70578 | benjamin.peterson | 2009-03-23 22:24:56 -0500 (Mon, 23 Mar 2009) | 1 line
this is better written using assertRaises
........
r70599 | benjamin.peterson | 2009-03-25 16:42:51 -0500 (Wed, 25 Mar 2009) | 1 line
this can be slightly less ugly
........
r70641 | guilherme.polo | 2009-03-27 16:43:08 -0500 (Fri, 27 Mar 2009) | 3 lines
Adjusted _tkinter to compile without warnings when WITH_THREAD is not
defined (part of issue #5035)
........
r70642 | georg.brandl | 2009-03-27 19:48:48 -0500 (Fri, 27 Mar 2009) | 1 line
Fix typo.
........
r70650 | benjamin.peterson | 2009-03-28 14:16:10 -0500 (Sat, 28 Mar 2009) | 1 line
give os.symlink and os.link() better parameter names #5564
........
r70660 | georg.brandl | 2009-03-28 14:52:58 -0500 (Sat, 28 Mar 2009) | 1 line
Switch to fixed Sphinx version.
........
r70661 | georg.brandl | 2009-03-28 14:57:36 -0500 (Sat, 28 Mar 2009) | 2 lines
Add section numbering to some of the larger subdocuments.
........
r70674 | guilherme.polo | 2009-03-29 05:19:05 -0500 (Sun, 29 Mar 2009) | 1 line
Typo fix.
........
r70691 | raymond.hettinger | 2009-03-29 13:51:11 -0500 (Sun, 29 Mar 2009) | 1 line
Make life easier for non-CPython implementations.
........
r70697 | benjamin.peterson | 2009-03-29 16:22:35 -0500 (Sun, 29 Mar 2009) | 1 line
this has been fixed since 2.6 (I love removing these)
........
r70698 | benjamin.peterson | 2009-03-29 16:31:05 -0500 (Sun, 29 Mar 2009) | 1 line
thanks to guido's bytecode verifier, this is fixed
........
r70700 | benjamin.peterson | 2009-03-29 16:50:14 -0500 (Sun, 29 Mar 2009) | 1 line
use the awesome new status iterator
........
r70704 | benjamin.peterson | 2009-03-29 21:49:32 -0500 (Sun, 29 Mar 2009) | 1 line
there's actually three methods here #5600
........
2009-03-30 11:51:56 -03:00
|
|
|
:numbered:
|
2007-08-15 11:28:22 -03:00
|
|
|
|
|
|
|
extending.rst
|
|
|
|
newtypes.rst
|
|
|
|
building.rst
|
|
|
|
windows.rst
|
2014-03-13 09:13:45 -03:00
|
|
|
|
|
|
|
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:
|
|
|
|
|
2007-08-15 11:28:22 -03:00
|
|
|
embedding.rst
|