扩展和嵌入python解释器¶
本文档描述了如何用C或C++编写模块,用新的模块扩展Python解释器。这些模块不仅可以定义新的函数,还可以定义新的对象类型及其方法。文档还描述了如何将Python解释器嵌入另一个应用程序中,以用作扩展语言。最后,本文演示了如何编译和链接扩展模块,以便在底层操作系统支持此功能的情况下(在运行时)将它们动态加载到解释器中。
本文档假设您对Python有基本的了解。有关该语言的非正式介绍,请参见 python教程 . python语言引用 给出了语言的更正式的定义。 python标准库 记录现有的对象类型、函数和模块(包括内置的和用python编写的),它们为该语言提供了广泛的应用范围。
有关整个python/c API的详细描述,请参见单独的 python/c API参考手册 .
推荐的第三方工具¶
本指南仅涵盖创建扩展的基本工具,这些扩展是作为此版本的cpython的一部分提供的。第三方工具,如 Cython , cffi , SWIG 和 Numba 提供更简单和更复杂的方法来创建Python的C和C++扩展。
参见
- Python Packaging User Guide: Binary Extensions
《python packaging用户指南》不仅涵盖了简化二进制扩展创建的几种可用工具,而且还讨论了为什么首先需要创建扩展模块的各种原因。
在没有第三方工具的情况下创建扩展¶
本指南的章节涵盖了在没有第三方工具的帮助下创建C和C++扩展。它主要是为那些工具的创建者设计的,而不是作为创建自己的C扩展的推荐方法。
在更大的应用程序中嵌入cpython运行时¶
有时,与其创建在Python解释器中作为主应用程序运行的扩展,不如将cpython运行时嵌入到更大的应用程序中。本节介绍了成功完成这项工作所涉及的一些细节。