福州论坛

 找回密码
 立即注册
搜索
查看: 1|回复: 0

扩展和嵌入 Python 解释器

[复制链接]

1280

主题

140

回帖

21万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
215882
发表于 5 天前 | 显示全部楼层 |阅读模式

            
  
扩展和嵌入 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 User Guide ”不仅涵盖了几个简化二进制扩展创建的可用工具,还讨论了为什么首先创建扩展模块的各种原因。






不使用第三方工具创建扩展?

本指南的这一部分包括在没有第三方工具帮助的情况下创建 C 和 C ++ 扩展。它主要用于这些工具的创建者,而不是建议你创建自己的 C 扩展的方法。



1. 使用 C 或 C++ 扩展 Python
1.1. 一个简单的例子
1.2. 关于错误和异常
1.3. 回到例子
1.4. 模块方法表和初始化函数
1.5. 编译和链接
1.6. 在C中调用Python函数
1.7. 提取扩展函数的参数
1.8. 给扩展函数的关键字参数
1.9. 构造任意值
1.10. 引用计数
1.11. 在C++中编写扩展
1.12. 给扩展模块提供C API


2. 自定义扩展类型:教程
2.1. 基础
2.2. 向基本示例添加数据和方法
2.3. 提供对于数据属性的更精细控制
2.4. 支持循环垃圾回收
2.5. 子类化其他类型


3. 定义扩展类型:已分类主题
3.1. 终结和内存释放
3.2. 对象展示
3.3. 属性管理
3.4. 对象比较
3.5. 抽象协议支持
3.6. 弱引用支持
3.7. 更多建议


4. 构建C/C++扩展
4.1. 使用distutils构建C和C++扩展
4.2. 发布你的扩展模块


5. 在 Windows 上构建 C 和 C++ 扩展
5.1. 菜谱式说明
5.2. Unix 和 Windows 之间的差异
5.3. DLL 的实际使用






在更大的应用程序中嵌入 CPython 运行时?

有时,不是要创建在 Python 解释器中作为主应用程序运行的扩展,而是希望将 CPython 运行时嵌入到更大的应用程序中。 本节介绍了成功完成此操作所涉及的一些细节。



1. 在其它应用程序嵌入 Python
1.1. 高层次的嵌入
1.2. 突破高层次嵌入的限制:概述
1.3. 纯嵌入
1.4. 对嵌入 Python 功能进行扩展
1.5. 在 C++ 中嵌入 Python
1.6. 在类 Unix 系统中编译和链接








         




上一篇:python语言是一种什么语言
下一篇:常見Python問答集
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|福州论坛 ( 非经营性网站 )|网站地图

GMT+8, 2025-1-5 07:41 , Processed in 0.136619 second(s), 29 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.