mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			71 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			2.7 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. 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/>`_
 | |
|       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.
 | |
| 
 | |
| .. toctree::
 | |
|    :maxdepth: 2
 | |
|    :numbered:
 | |
| 
 | |
|    extending.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
 | 
