大坑:
系统自带的python2不要卸载,一些系统命令要用,2和3可以共存。

linux中Python3.6.8安装

[root@master ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

1、首先要查看系统中有没有自带的gcc

gcc --version

2、通过wget命令下载并解压

wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
tar -zxf Python-3.6.8.tgz -C /opt

3、安装依赖环境

首先说一下-devel 这个意思是软件包所对应的开发包,我们也可以看到我们所有的依赖都是软件包的开发包。zlib是一个运行库,zlib-devel包括运行库和头文件等,在需要编译C/C++程序的时候,python就会用到。

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

工具

作用

zlib-devel

zlib是一个提供数据压缩用的函式库,这个包主要功能就是控制处理器和内存,以此来达到压缩和解压缩的目的

bzip2-devel

与zlib一样是一个解压缩软件

openssl

加密通讯,python的一些网页框架服务会用到,包如其名使用的是ssl协议。是一个多用途、快平台的密码工具

ncurses

一个提供功能定义,屏幕绘制的图形互动动态库,vim就用到过这个包

SQLite

这个应该不陌生,轻型数据库

readline

提供交互式的文本编辑功能

tk

提供基本的可视化界面类似于swing

gdbm

提供简单的资料管理函数

db4

为客户端/服务器提供嵌入式数据库支持

libpcap

数据包捕获函数库,网络分接口收集数据,数据过滤器决定是否接受数据包

xz

具有高压缩率的数据压缩软件

libffi

提供了python调用其他语言的功能

4、编译安装

cd /opt/Python-3.6.8/ && ./configure --prefix=/usr/local/python3 --enable-optimizations && make && make install 
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
If you want a release build with all stable optimizations active (PGO, etc), please run ./configure --enable-optimizations

# 说明:
  很多教程都有最后一步,但是很少有网站会告诉你为什么会有最后一步。
  所谓软连接就相当于win下的快捷方式。你可以通过快捷方式打开你想要使用的软件。
  但是为什么要把快捷方式放在/usr/bin/呢。这就涉及到环境变量的问题了,
  你当然可以不使用最后的软连接而直接把/usr/local/python3/bin加到环境变量里面,
  那随你喜好。但是在这里/usr/bin/是默认已经在环境变量里面的,
  把快捷方式放到这个文件夹相当于间接的把该Python3加入环境变量,
  这样你才可以直接在终端输入“python3”打开Python。
# 为什么不把软连接放到桌面呢?
我觉得有两个原因:第一、无法在终端通过命令行操作Python3。第二、并不是所有的Linux系统都是图形化界面,可能没有桌面啊,亲!
至于最后一句是为pip建立软件接。pip3是Python3内置的一个软件。用来安装Python包的。比如要安装Python3的numpy包。直接在终端使用如下命令即可:
pip3 install requests

5、验证

[root@master Python-3.6.8]# python3 --version
Python 3.6.8
[root@master Python-3.6.8]# pip3 --version
pip 18.1 from /usr/local/python3/lib/python3.6/site-packages/pip (python 3.6)

Youth is not afraid of years, there is still glory!