温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。
一、运行环境
CentOS 7,已安装 gcc、zlib、zlib-devel 等编译工具。
18/09/11 更新
Python3.7 及之后,需加装 libffi-devel 以解决“ModuleNotFoundError: No module named '_ctypes'”问题:
# yum install libffi-devel -y
Ubuntu 则运行此命令安装编译工具:
# apt-get install build-essential zlib1g zlib1g-dev
二、安装步骤
1、下载源码包
最新版本发布地址:Python Release,目前(17/08)是 3.6.2。
# wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
# tar -zxf Python-3.6.2.tgz && cd Python-3.6.2
2、安装 readline 模块
若不安装该模块,编译安装后 Python 交互式无法使用退格键,方向键。
# yum install libreadline6 libreadline6-dev
3、解决PIP包管理器所需依赖包
修改 Modules/Setup 文件,将下面 1 行取消注释,大概在文件的 365 行左右。
# vim Modules/Setup.dist
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
4、编译源码并安装
指定安装目录:/usr/local/python3。
# ./configure --prefix=/usr/local/python3 && make && make install
5、创建链接
将 Python3 以及后续通过 pip3 安装的软件的可执行文件添加到 PATH
# echo 'PATH=$PATH:/usr/local/python3/bin' >> ~/.bashrc && source ~/.bashrc
6、验证一下
# python3 -V
Python 3.6.2
三、拓展
1、通过 yum 安装 python3 以及 pip3
# yum -y install https://centos7.iuscommunity.org/ius-release.rpm
# yum -y install python36u python36u-pip python36u-devel
# python3.6 -V
Python 3.6.2
2、替换系统默认版本 python 为 python3
# mv python python.bak
# ln -s /usr/local/python3/bin/python3 /usr/bin/python
由于 yum 使用默认 2.7 版本,被替换后会出现问题,修改一下 /usr/bin/yum
,将第一行的 #!/usr/bin/python
改为 #!/usr/bin/python2.7
即可。