目录

    1. 编译器准备

    • 准备 Python 源码 在 Python 的官网,下载需要进行编译的 Python 版本源代码。这里选择的是 Python 2 的最新版本 Python-2.7.14.tar.xz点击前往

    • 准备编译器 在 Windows 上,Python 2.7 的源代码内置的项目工程,支持 Visual Studio 2008、2010 打开。当然,VS 2013 也能够编译,在导入项目时,选择升级 VC++编译器和库即可。这里使用的是,VS2013_RTM_PRO_CHS点击下载

    2. 源代码的目录结构

    • Demo:Demo 用的代码,主要用来展示 Python 的一些应用
    • Doc:Python 的 UserManual,Latex 格式
    • Grammar:语法文件。这个语法文件会在 Python 运行的时候被用来分析Python 源代码
    • include:Python Include 用的头文件
    • Lib:Python 的库文件
    • Mac:For Mac
    • Misc:如字面意思,一些不适合放在其他地方的文件就放在这里了
    • Modules:Python 的一些 Built-in Module 的实现
    • Objects:Python 的基本内部对象的实现,比如 class/list 等等
    • Parser:Python 的词法分析和语法分析
    • PC:比较老的 Windows 和 OS2 的 Port 的项目以及 Port 用到的一些公用文件放在这里,PCBuild 和 PCBuild8 都要用到这个目录的内容
    • PCBuild:Python 用于 Visual Studio 2008/2010 的 Project 文件
    • Python:Python 主程序代码
    • RISCOS:Python 的 RISC OS Port
    • Tools:Build 和 Extend Python 所需的工具

    3. 编译步骤

    • 第一步,解压 Python-2.7.14

    • 第二步,进入 PCbuild文件夹,使用 VS2013 打开 pcbuild.sln

    • 第三步,编译运行。最终会在 PCbuild 文件夹下生成 python_d.exepython27_d.dll 文件,可双击 python_d.exe,进入 python 命令行环境。

    4. Python 的总体架构

    在图左边是, Python 提供的大量的模块,库以及用户自定义的模块。比如在执行 import os 时,这个 os 就是 Python 内建的模块,当然用户还可以通过自定义模块来扩展 Python 的模块。

    在图中间的是,Python 的核心,解释器(interpreter)。Scanner 对应词法分析,将文件输入的 Python 源代码或从命令行输入的一行行 Python 代码切分为一个一个的 token;Parse r对应语法分析部分,在 Scanner 的分析结果上进行语法分析,建立抽象语法树(AST);Compiler 是根据建立的AST生成指令集合,Python字节码(byte code),就像Java编译器和C#编译器所做的那样;最后由 Code Evaluator 来解释并执行这些字节码。因此,Code Evaluator 又可以被称为执行引擎。

    在图右边是,Python的运行时环境,包括对象/类型系统(Object/Type structures),内存分配器(Memory Allocator)和运行时状态(Current State of Python)。运行时状态维护了解释器在执行字节码时,在不同的状态之间切换的动作,可以将它视为一个巨大而复杂的有穷状态机。内存分配器则全权负责 Python 中创建对象时对内存的申请工作,实际上它就是 Python 运行时与C中 malloc 的一层接口。而对象/类型系统则包含了 Python 中存在的各种内建对象,比如整数、list 和 dict 等。

    5. 参考

    • 《Python源码剖析》