banner.gif adie's blog
主页 博客 胭脂泪,相留醉,几时重,自是人生长恨水长东
统计
日志总数: 127
评论总数: 123
日志分类
日志归档
最近日志
最近评论
订阅
rss2.gif

atom.gif

google_rss
yc.gif 【技术资料】 阅读 6522 次

定制 Python 嵌入 C++: (一) 源代码目录结构

2011-06-23 17:47:29

Python 作为一个流行的脚本语言, 在很多场合下都有应用. Python 本身支持嵌入其它语言中使用, 但是由于其功能强大, 体积也大, 嵌入时就显得有些笨拙. 因此, 嵌入时对 python 进行一些精简是很有意义的.

非常幸运, Python 是一个开源的软件, 完全可以随意定制. 由于 Python 本身是用 C 写的, 将其嵌入 C/C++ 程序里尤为方便. 并且可以利用 boost::python 库简化对语言的扩展.

我们首先要做的是下载 Python 的源代码, 可以从其官方网站下载, 我下载的版本是 2.7.2 . Python 的版本现在是 2.x 和 3.x 同时进行的. 3.x 由于语法更新较大, 不向后兼容, 很多库都还不支持. 所以我选择了 2.x 的最新版本 2.7.2 .  (PS. 如果官方网站无法下载, 我在本地还提供了一个 rar 的压缩率更高一些的下载:  Python 2.7.2 下载)

源代码下载后解压进入 python2.7.2 的目录, 可以看到文件和目录很多, 为了看起来清爽些, 我们先来做点清理:

  • Demo 目录放的是一些使用 python 的各种演示, 你可以从里面学习 python 的用法和特性等. 我们先把它删除(不用担心, 如果你想找回删除的东西重新解压一下就是了).
  • Doc 目录包含了 Python 的文档, 是 reStructuredText 格式的, 你可以把它编译成 HTML 文档或其它格式.  虽然 python 的网站上提供了编译好的这些文档, 但随时可能更新, 为了保留一份和这个版本的 python 兼容的文档, 手动编译一份是有用的. 不过我们现在还不打算做这件事情, 所以先把它剪切到其它地方去吧!
  • Grammar 目录下是一份 Python 的语法描述. 保持和当前版本同步. 如果以后准备修改 Python 的语法, 首先就从这份文档开始, 所以将其保留.
  • Include 目录, 包含了 python 相关的头文件, 如果你要用 C 写自定义模块来扩展 python, 你就要引用这个目录下的文件. 编译 boost::python 也需要这些文件. 当然, 编译 python 本身这些文件也是不可少的. 保留.
  • Lib 目录, 包含 python 运行时的标准库, 这些库都是用 python 写的, 以后我们还会对其做处理. 先保留.
  • Mac 目录,  包含 MacOSX 系统的一些特性和工具, 由于我的电脑不是 Mac 平台的, 删除.
  • Misc 目录, 这里是一些乱七八糟的没地方放的东西: 文档, 工具, 历史等等, 意义不大, 删除.
  • Modules 目录, 包含了所有用 C 语言编写的模块, 比如 ramdom, cStringIO 等. Modules中的模块是那些对速度要求非常严格的模块. 而有一些对速度没有太严格要求的模块, 比如 os, 就是用Python编写, 并且放在Lib目录下. 该目录需要保留.
  • Objects 目录, 该目录中包含了所有 Python 的内建对象, 包括整数, list, dict 等. 同时, 该目录还包括了 Python 在运行时需要的所有的内部使用对象的实现. 保留.
  • Parser 目录, 包含了 Python 解释器中的词法分析和语法分析. 另外还有一些相关的工具, 这些工具能够根据 Python 语言的语法自动生成 Python 语言的词法和语法分析器, 与YACC非常类似. 保留.
  • PC 和 PCBuild 目录, 这两个目录包含了 PC 平台上编译 Python 的工程文件.  Visual C++ 2008 (VC9) 的工程文件再 PCBuild 中, 其余 (VC6, VC7, VC8 等) 的在 PC 目录中. 由于我用的 VS2005, 故删除 PCBuild, 保留 PC 目录了.
  • Python 目录: 该目录下包含了 Python 解释器中的编译和执行引擎, 是Python运行的核心所在. 需要保留.
  • RISCOS 目录: 包含 RISC OS(一种移动设备的系统) 系统的相关文件, 删除.
  • Tools 目录: 包含了一些在编译或扩展 python 时的有用的工具, 移到其他位置.
  • configure, configure.in, Makefile.pre.in, pyconfig.h.in 是在 linux 下编译需要的文件, 删除.
  • .hg_archival.txt, .hgtags 是版本控制系统的文件, 删除.
  • install-sh, setup.py 是将编译好的 python 安装到系统里面的文件, 删除.
  • LICENSE 是版本历史和许可协议文件, 删除.
  • README 是对 python 的一些介绍, 各平台兼容性等等, 删除.
清理过后的最终源代码目录如下图所示:

  

 

▲评论

X 正在回复:
姓 名: 留下更多信息
性 别:
邮 件:
主 页:
Q Q:
来 自:
职 业:
评 论:
验 证:


Valid HTML 4.01 Strict Valid CSS!
Copyleft.A!die Software Studio.ADSS
Power by webmaster@adintr.com