CentOS 源码编译安装 Python3
准备
yum -y install wget gcc make libffi-devel zlib-devel readline-devel bzip2-devel ncurses-devel sqlite-devel gdbm-devel xz-devel tk-devel openssl-devel
说明:
yum install wget gcc make readline-devel
# 解决 import bz2 报错
yum install bzip2-devel
# 解决 import curses 报错
yum install ncurses-devel
# 解决 import sqlite3 报错
yum install sqlite-devel
# 解决 _dbm _gdbm 缺失提醒
yum install gdbm-devel
# 解决 _lzma 缺失提醒
yum install xz-devel
# 解决 _tkinter 缺失提醒
yum install tk-devel
# 解决 readline 缺失提醒及方向键行为非预期的问题
yum install readline-devel
yum install zlib-devel
# 解决ImportError: No module named '_ctypes' 错误
yum install libffi-devel
在Python官网下载
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz # 下载
xz -d Python-3.7.1.tar.xz
tar -xvf Python-3.7.1.tar # 解压缩
过程
配置
cd Python-3.7.1
./configure --prefix=/usr/local/python3.7 --enable-optimizations
--prefix
指定了预期安装目录
--enable-optimizations
优化选项
生成了Makefile
文件,这个过程不会自动创建/usr/local/python3.7
目录。
编译
# 依然在Python-3.7.1目录下
make -j8
安装
make install
/usr/local/python3.7
目录被创建了,执行安装。
环境配置
ln -s /usr/local/python3.7/bin/python3 /usr/bin/python3
ln -s /usr/local/python3.7/bin/pip3 /usr/bin/pip3
卸载
如果养成好的习惯,使用了--prefix
参数,那么仅需要删除对应文件夹,去除相关环境变量即可。否则需要进入源码的src
文件夹下,执行make uninstall
。
补充
安装好之后,输入python3
即可使用,pip3
也可以使用。发现机器本身自带的python2
对应的pip
无法使用,于是重新安装一下pip
:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py