CPython 实现原理
  • README
  • 一、简介
    • 1.1 如何使用此书
    • 1.2 额外材料和学习资料
  • 二、获取 CPython 源码
    • 2.1 源代码里有什么?
  • 三、准备你的开发环境
    • 3.1 选IDE还是编辑器?
    • 3.2 安装Visual Studio
    • 3.3 安装Visual Studio Code
    • 3.4 安装JetBrains Clion
    • 3.5 安装Vim
    • 3.6 总结
  • 四、编译 CPython
    • 4.1 在 macOS 上编译 CPython
    • 4.2 在 Linux 上编译 CPython
    • 4.3 安装自定义版本
    • 4.4 make 快速入门
    • 4.5 CPython 的 make 目标
    • 4.6 在 Windows 上编译 CPython
    • 4.7 PGO 优化
    • 4.8 总结
  • 五、Python 语言和语法
    • 5.1 为什么 CPython 是用 C 语言而不是用 Python 语言来实现
    • 5.2 Python 语言规范
    • 5.3 分析器生成器
    • 5.4 重新生成语法
    • 5.5 总结
  • 六、配置和输入
    • 6.1 配置状态
    • 6.2 构建配置
    • 6.3 从输入构建模块
    • 6.4 总结
  • 七、基于语法树的词法分析和解析
    • 7.1 具象语法树生成器
    • 7.2 CPython 解析器-分词器
    • 7.3 抽象语法树
    • 7.4 要记住的术语
    • 7.5 一个示例:添加一个约等于比较运算法
    • 7.6 总结
  • 八、编译器
    • 8.1 相关源文件
    • 8.2 重要的专业术语
    • 8.3 实例化一个编译器
    • 8.4 未来标志和编译器标志
    • 8.5 符号表
    • 8.6 核心编译过程
    • 8.7 汇编
    • 8.8 创建一个 Code Object
    • 8.9 使用 Instaviz 展示 Code Object
    • 8.10 一个示例:实现约等于操作符
    • 8.11 总结
  • 九、求值循环
    • 9.1 构建线程状态
    • 9.2 构建帧对象
    • 9.3 帧的执行
    • 9.4 值栈
    • 9.5 例子:在列表中添加元素
    • 9.6 总结
  • 十、内存管理
    • 10.1 C 中的内存分配
    • 10.2 Python 内存管理系统设计
    • 10.3 CPython 内存分配器
  • 十一、并行和并发
    • 11.1 并行和并发模型
    • 11.2 进程的结构
    • 11.3 多进程并行
    • 11.4 多线程
    • 11.5 异步编程
    • 11.6 生成器
    • 11.7 协程
    • 11.8 异步生成器
    • 11.9 子解释器
    • 11.10 总结
  • 十二、对象和类型
    • 12.1 本章的例子
    • 12.2 内置类型
    • 12.3 对象和可变长度对象类型
    • 12.4 类型类
    • 12.5 布尔和整数类型
    • 12.6 Unicode 字符串类型
    • 12.7 字典类型
    • 12.8 总结
  • 十三、标准库
    • 13.1 Python 模块
    • 13.2 Python 和 C 模块
  • 十四、测试套件
    • 14.1 在 Windows 上运行测试套件
    • 14.2 在 Linux 或 MacOS 上运行测试套件
    • 14.3 测试标志
    • 14.4 运行特定测试
    • 14.5 测试模块
    • 14.6 测试工具
    • 14.7 总结
  • 十五、调试
  • 十六、基准测试、性能分析和追踪
  • 十七、下一步计划
    • 17.1 为 CPython 编写 C 扩展
    • 17.2 改进你的 Python 应用程序
    • 17.3 为 CPython 项目做贡献
    • 17.4 继续学习
  • 十八、附录
    • 18.1 C 预处理器
    • 18.2 基础 C 语法
    • 18.3 总结
  • 致谢
Powered by GitBook
On this page
Edit on GitHub
  1. 三、准备你的开发环境

3.4 安装JetBrains Clion

JetBrains 分别为 Python 和 C/C++ 开发了名为 PyCharm 和 CLion 的 IDE。

CPython 同时具有 C 和 Python 代码。你无法将 C/C++ 支持安装到 PyCharm 中,但 CLion 绑定了 Python 支持。

重要

Makefile 支持仅在 CLion 2020.2 及更高版本中可用。

重要

此步骤要求你已通过运行 configure 生成了一个 makefile 并已编译 CPython。

请阅读“编译 CPython”中适用于你的操作系统的章节,然后返回本章。

第一次编译 CPython 后,源目录的根目录中将有一个 makefile。

打开 CLion 并从欢迎屏幕中选择 Open or Import。导航到源目录,选择 makefile,然后按 Open:

截图不译。

CLion 将询问你是要打开目录还是将 makefile 作为新项目导入。选择 Open as Project 以作为项目导入。

CLion 会在导入之前询问要运行哪个 make 目标。保留默认选项 clean,然后继续:

截图不译。

接下来,检查是否可以从 CLion 构建 CPython 可执行文件。从顶部菜单中,选择 Build/Build Project。

在状态栏中,应该能看到项目构建的进度指示器:

截图不译。

完成此任务后,你可以将已编译的二进制文件作为运行/调试的配置选项。

选择 Run/Edit Configurations 以打开 Run/Debug Configurations 窗口。在此窗口中,选择 +/Makefile Application 并完成以下步骤:

  1. 将 Name 设置为 cpython。

  2. 将构建目标保留为 all。

  3. 对于可执行文件,选择下拉菜单并选择 Select Other,然后在源目录中找到已编译的 CPython 二进制文件。它的名称为 python 或 python.exe。

  4. 输入任何你希望始终拥有的程序参数,例如用于启动开发模式的 -X dev。这些标志将在后面的“使用命令行设置运行时配置”中介绍。

  5. 将工作目录设置为 CLion 宏 $ProjectFileDir$:

截图不译。

单击 OK 以添加此配置。对于任何 CPython make 目标,你可以根据需要多次重复此步骤。完整参考请参阅“编译 CPython”一章中的“CPython 的 Make 目标”部分。

cpython 构建配置现在将在 CLion 窗口的右上角可用:

截图不译。

要对其进行测试,请单击箭头图标或从顶部菜单中选择 Run/Run ’cpython’。现在应该能在 CLion 窗口的底部看到 REPL:

截图不译。

棒极了!现在你可以进行更改并通过单击 Build 和 Run 快速试用它们。如果你在 C 代码中放置了任何断点,请确保选择 Build 而不是 Run。

在代码编辑器中,macOS 上的快捷键 Cmd + 单机 和 Windows 和 Linux 上的 Ctrl + 单机 快捷键将调出编辑器内导航功能:

截图不译。

Previous3.3 安装Visual Studio CodeNext3.5 安装Vim

Last updated 2 years ago