1.安装与设置git编译
2.从GitHub得到CPython源代码分支

git clone https://github.com/<your_username>/cpython
cd cpython

或者从官网下载

wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
tar zxvf    Python-3.9.0.tgz

3.编译CPython
unix,macos,linux:

./configure --with-pydebug && make -j

windows

PCbuild\build.bat -e -d

4. 运行测试

./python -m test -j3

除了 CPython ,还有其它python解释器
PyPy: 主要用于主要平台上的高速(jit编译)操作的Python解释器
• Jython: Python解释器,专注于与Java虚拟机(JVM)环境的良好集成
• IronPython: 专注于与公共语言运行时(CLR)良好集成的Python解释器,由.net和Mono提供
• Stackless: Python解释器专注于提供轻量级微线程,同时保持很大程度的兼容性,与CPython特定的扩展模块

如果对依赖于POSIX系统特定功能(如使用新系统调用)的Python进行了更改时,有必要更新configure脚本以测试功能的可用性。
Python的配置脚本是从configure生成的。使用Autoconf交流。不用编辑配置,然后运行autoreconf来重新生成配置和许多其他文件(例如pyconfig.h)。
当提交一个补丁时,修改了configure.ac,您还应该包括生成的文件。
请注意,运行autoreconf与运行autoconf是不同的。例如,autoconf本身就可以不是pyconfig.h.in产生。autoreconf重复运行autoconf和许多合适的其他工具。
Python的configure.ac脚本通常需要一个特定版本Autoconf。
如果Autoconf的系统副本与此版本不匹配,则需要安装自己的Autoconf副本。

python源码精要(7)-CPython编译相关推荐

  1. python源码精要(6)-CPython编译标志

    CPython提供了几个编译标志,它们有助于调试各种东西.而所有已知的标志可以在Misc/SpecialBuilds.txt文件中找到 1.最关键的一个是Py_DEBUG标志,它创建所谓的" ...

  2. python源码精要(8)-CPython源代码结构

    在CPython源树中有几个顶级目录.知道每一个人应该持有什么会有所帮助: Doc:编写官方文档.这就是https://docs.python.org/所使用的.请参见构建文档. Grammar:语法 ...

  3. python源码精要(9)-CPython内部原理快速指南(1)

    对于那些有兴趣了解更多关于CPython内部原理的人,这是一个快速指南.它提供了一个摘要的源代码结构,并包含对资源的引用. 对于Python模块,典型的布局是: • Lib/<module> ...

  4. python加密反编译_对Python源码进行加密及反编译前后对比

    关于python的加密 目前软件开发商对 Python 加密时可能会有两种形式,一种是对python转成的exe进行 保护,另一种是直接对.py或者.pyc文件进行保护,下面将列举两种形式的保护流程. ...

  5. python源码精要(10)-python源代码阅读概要(1)

    位于Doc/reference目录中的是Python语言中每个特性的重构文本解释.这在docs.python.org上形成了官方的Python参考指南.目录内的文件,你需要了解整个语言,结构,和关键字 ...

  6. python源码精要(5)-C代码规范

    对公共函数使用Py前缀;决不用于静态函数. Py_前缀是为全局服务例程保留的,比如Py_FatalError; 特定的例程组(例如特定的对象类型api)使用较长的前缀,例如对字符串函数使用PyStri ...

  7. python源码精要(4)-C代码规范

    C代码规范 当在二目操作符(比如:&&,||,&,|)在中断长表达式时,该操作符位于前一行的末尾,括号的格式应如图所示.例如: if (type->tp_dictoffs ...

  8. python源码精要(3)-C代码规范

    C代码规范 return语句不应该有多余的括号: return albatross; /* 正确 */ return(albatross); /* 不正确 */ 函数和宏调用样式: foo(a, b, ...

  9. python源码精要(2)-C代码规范

    C代码布局 使用4空格缩进,完全不使用制表符. 每行不应该超过79个字符.如果这个规则和前面的规则一起没有给您足够的空间来编写代码,那么您的代码就太复杂了--考虑使用子例程. 任何行都不应该以空格结束 ...

最新文章

  1. 简易OA漫谈之工作流设计(DB)
  2. Realm Configuration HOW-TO--官方
  3. 题库练习3(质因子、取近似值、合并表记录)
  4. WireShark之抓包过滤链接部分
  5. 云顶之弈机器人法爆_云顶之弈10.16b机器人阵容推荐 云顶之弈10.16b机器人娱乐阵容玩法攻略...
  6. 你是一直认为count(1)比count(*)效率高么?
  7. ROS入门 TX2+Turtlebot+Kinect2.0配置记录
  8. idea中leetcode提示未登录_IntelliJ IDEA中LeetCode插件配置问题代码解析
  9. JAVA程序设计第十版第七章_java程序设计第七章答案
  10. Android Studio导入Project、Module的正确方法
  11. python100例详解-Python 经典算法100及解析(小结)
  12. HTML导航条和翻页栏
  13. c语言 美元符号,汇编语言 美元符号
  14. 如何与别人解释云计算是什么意思?
  15. pc服务器是微型计算机吗,pc和主机的区别是什么?
  16. 一句话生成图片,FlagAI使用(附页面操作代码) | 机器学习
  17. 用adb往手机上装软件
  18. 电子合同渐成主流,君子签以区块链技术打造合同签约新生态
  19. AirDisk产品S3和Q3C的区别
  20. Java实现水电费计费项目

热门文章

  1. CentOS7.2最小化安装后系统优化
  2. VMWARE错误-VirtualInfrastructure.Utils.ClientsXml的类型初始值设定项引发异常
  3. BZOJ 1211 树的计数(purfer序列)
  4. Silverlight 2学习笔记一:初识Silverlight
  5. [C1W3] Neural Networks and Deep Learning - Shallow neural networks
  6. 八:MVC初始化数据库
  7. a:hover伪类在ios移动端浏览器内点击无效的解决方法
  8. 去培训机构参加IT培训值不值
  9. 静态初始化块的执行顺序
  10. angular2.0学习日记1