CentOS 7 下安装 Python3.7.1

当前最新的 CentOS 7.3 默认安装的是 Python 2 ,并且默认的官方 yum 源中不提供 Python 3 的安装包。最近需要在机器上装awscli,需要python2.6.5+或python3.3+,python3我这边通过源码编译的方式安装。
我的机器版本:

cat /etc/redhat-release
#CentOS Linux release 7.3.1611 (Core)

python2版本

python --version
Python 2.7.5

源码编译安装

  • 先安装环境依赖,方便后续编译安装
# wget 用于下载源码包
# gcc 和 make 用于编译
yum install wget gcc make

#make报错,Python 有个很重要的内建模块 zipimport 用于从 Zip 压缩包中导入模块
#zipimport.ZipImportError: can't decompress data; zlib not available
yum install zlib-devel

#make install报错,
#ModuleNotFoundError: No module named ‘_ctypes’
yum install libffi-devel

# 解决 import ssl 报错 No module named '_ssl'
yum install openssl-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
  • 配置好了环境,从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
#--prefix 是预期安装目录,--enable-optimizations 是优化选项(LTO,PGO 等)
./configure --prefix=/usr/local/python3.7 --enable-optimizations
# 安装
make && make install
  • 添加软链接
ln -s /usr/local/python3.7/bin/python3.7 /usr/bin/python3
ln -s /usr/local/python3.7/bin/pip3.7 /usr/bin/pip3
  • 查看版本号
python3 --version
#Python 3.7.1
pip3 --version
#pip 10.0.1 from /usr/local/python3.7/lib/python3.7/site-packages/pip (python 3.7)

后续安装升级

  • pip3版本号比较低,通过命令升级
pip3 install --upgrade pip

然后查看版本号

pip3 --version
#pip 18.1 from /usr/local/python3.7/lib/python3.7/site-packages/pip (python 3.7)
  • centos7自带的python2的没有pip,可以通过脚本安装
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py

查看版本号

pip --version
#pip 18.1 from /usr/lib/python2.7/site-packages/pip (python 2.7)

参考

  • 在 CentOS 7 上安装并配置 Python 3.6 环境
  • Python3: ImportError: No module named '_ctypes' when using Value from module multiprocessing

你可能感兴趣的:(shell,python)