Python 源码阅读之准备工作

Python源码阅读之准备工作

闲来无事, 想深入学习一下Python的实现机制, 因此阅读源码成为了我的不二选择, 在这里借鉴了”Python 源码剖析”一书, 也当做是这本书的读书笔记。

Python源码剖析 by 陈儒 ISBN: 9787121068744

此文是记录基本环境配置的过程,在这里我阅读的源码是Python 2.7.14,在跟随书中编译的过程中遇到了一些问题,在这里记录一下。

下载源码(官网有对应版本的源文件)

源码下载地址

目录结构

源码目录

Include: 包含了该目录下Python提供的所有头文件, 如果用户需要自己使用C/C++来编写自定义模块扩展Python, 将会用到这里提供的头文件.
Lib: 包含了Python自带的所有标准库.
Modules: 该目录包含了所有用Python语言写的模块(对速度要求严格).
Parser: 该目录包含了Python解释器中的Scanner和Parser部分, 即对Python源代码进行词法分析和语法分析的部分.
Object: 包含了Python所有內建对象.
Python: 包含了Python解释器中的Compiler和执行引擎部分, 是Python的核心.
PCBuild: 包含了VS工程文件.

编译(在这里使用VS2013)

首先要对解决方案进行配置, 只需要python/pythoncore两个部分即可.在这里startup首启动便是Python, 因此不需要修改.
这里写图片描述
这里写图片描述
然后重新生成解决方案之后就可以编译成功了.

Hello World

修改一部分源码, 测试成果.

/* ARGSUSED */
static int
int_print(PyIntObject *v, FILE *fp, int flags)
     /* flags -- not used but required by interface */
{
    long int_val = v->ob_ival;
    // 新添加内容
    PyObject* str = PyString_FromFormat("I am in int_print");
    PyObject_Print(str, stdout, 0);
    printf("\n");
    // end
    Py_BEGIN_ALLOW_THREADS
    fprintf(fp, "%ld", int_val);
    Py_END_ALLOW_THREADS
    return 0;
}

重新生成解决方案, 打开python_d.exe
这里写图片描述
看到我们新输入的内容, 编译成功。

发布了26 篇原创文章 · 获赞 41 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/anonymous_qsh/article/details/79373996