python3源码浅读——编译

python3源码编译安装

Python3源码结构

  • Python源码目录结构

  • Include:Python所有的头文件,写C/C++扩展时需要

  • Lib:Python自带的标准库,Python语言编写
  • Modules:由C语言编写的模块,如ctypes、mutltiprocessing等
  • Parser: Python解释器的Scanner和Parser,即Python的词法分析和语法分析
  • Objects:Python的内建对象的实现、包括list、dict等
  • Python:Python解释器的Compiler和执行引擎
  • PCBuild:Visual Studio工程文件

Linux下编译

1.编译环境准备
折腾模式
http://askubuntu.com/questions/21547/what-are-the-packages-libraries-i-should-install-before-compiling-python-from-so

1
2
sudo apt-get install build-essential libz-dev libreadline-dev
sudo apt-get install libncursesw5-dev libssl-dev libgdbm-dev libbz2-dev libc6-dev libsqlite3-dev liblzma-dev

包名 描述
build-essential Info list of build-essential packages
libz-dev–>zlib1g-dev compression library
libreadline-dev GNU readline and history libraries
libncursesw5-dev developer’s libraries for ncursesw
libssl-dev SSL development libraries
libgdbm-dev GNU dbm database routines
libbz2-dev high-quality block-sorting file compressor library
libc6-dev Embedded GNU C Library
libsqlite3-dev SQLite 3 development files
liblzma-dev XZ-format compression library

包查看:http://packages.ubuntu.com/

ncurses提供字符终端处理库
build-essential is a package which contains references to numerous packages needed for building software in general.(一个包含了编译debian包必需的大部分组件,如gcc、libc)
cat /usr/share/doc/build-essential/list

1
2
$ sudo apt-get installbuild-essential
$ sudo apt-get installbuild-essential --fix-missing

偷懒方式
https://docs.python.org/devguide/setup.html#compiling
ON Ubuntu

1
$ sudo apt-get build-dep python3.5

apt-get build-dep命令在编译安装软件时,自动安装相关的编译环境,比一堆apt-get install XXXX XXXX XXXX … 来进行安装,能更好的管理这些库文件和编译环境。
好习惯:记录下build-dep安装的包:

1
apt-get build-dep python3.5 | tee python3.5-build-dep.txt

ON RHEL

1
2
$ sudo yum install yum-utils
$ sudo yum-builddep python3

  1. 下载
1
wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
  1. 解压
1
tar -xvzf Python-3.5.2.tgz
  1. 编译安装
1
2
./configure --prefix=/usr/local/python35
make && make install

(5).安装pip
一般直接使用虚拟环境virtualenv or pyvenv.它们直接安装pip了

1
wget https://bootstrap.pypa.io/get-pip.py | python
  1. 建立虚拟环境
    使用Python开发,建立项目的虚拟环境是一个非常好的习惯,Python3.5自带pyvenv工具,所以不需要再安装virtualenv
  • 创建环境
  • 1
    /usr/local/python35/bin/pyvenv py3venv
  • 启动

    1
    source ./py3venv/bin/activate
  • 退出

    1
    deactivate

进入到py3venv环境,pip安装requests试试

Windows下编译

使用Visual Studio2015打开PCBuild目录下的pcbuild.sln即可,整个方案共有30多个项目,在研究Python源码时重点关注:

  • Python
  • Pythoncore

右击解决方案-> 属性->配置属性->只选取上面两个子项目->生成解决方案
按照上述简单步骤即可完成Python核心的编译,生成Python.exe

接下来结合Python源码剖析开始浅读Python3的源码。