1.创建临时目录,存储安装时需要用的过程文件
[root@localhost ~]# cd /usr
[root@localhost usr]# mkdir tools
[root@localhost usr]# cd tools
2.先行安装python所依赖的模块(重要,必须执行)
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite sqlite-devel readline-devel tk tk-devel gdbm gdbm-devel db4-devel libpcap-devel lzma xz xz-devel libuuid-devel libffi-devel
3.下载python3.7.1,并且进行编译安装:
[root@localhost tools]# wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
文件解压:
[root@localhost tools]# tar xvf Python-3.7.1.tar.xz
进入解压目录
[root@localhost tools]# cd ./Python3.7.1
创建编译安装目录并且进行配置:
[root@localhost Python-3.7.1]# mkdir /usr/local/python3
[root@localhost Python-3.7.1]# ./configure --prefix=/usr/local/python3
这一步有可能会提示
no acceptable C compiler found in $PATH
如果提示这个错误,则需要安装gcc
[root@localhost Python-3.7.1]# yum install make gcc gcc-c++
然后重新执行
[root@localhost Python-3.7.1]# ./configure --prefix=/usr/local/python3
进行安装:
[root@localhost Python-3.7.1]# make && make install
安装中可能遇到Fatal Python error: initfsencoding: Unable to get the locale encoding
LookupError: unknown encoding: GBK这种错误,需要先把系统的编码修改成utf8,再进行安装
[root@localhost Python-3.7.1]# export LANG=zh_CN.UTF-8
[root@localhost Python-3.7.1]# export LANGUAGE=zh_CN.UTF-8
重新安装python
[root@localhost zlib-1.2.11]# cd /usr/tools/Python-3.7.1
[root@localhost Python-3.7.1]# make && make install
再重新安装python3.7.1,完成
4.修改默认的python版本以及pip的软链
[root@localhost Python-3.7.1]# mv /usr/bin/python /usr/bin/python_old
软连接指向最新的python
[root@localhost Python-3.7.1]# ln -s /usr/local/python3/bin/python3 /usr/bin/python
pip也指向最新的软链
[root@localhost Python-3.7.1]#ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
用python命令查看版本:
[root@localhost Python-3.7.1]# python
5.解决yum升级后不可用的问题。
[root@localhost Python-3.7.1]# vi /usr/bin/yum
[root@localhost Python-3.7.1]# vi /usr/libexec/urlgrabber-ext-down
将文件中的
#!/usr/bin/python 改成: #!/usr/bin/python_old
指向旧的python
6.解决SSL import报错的问题,因为python进行了升级,所以ssl也要升级。下载安装openssl的1.0.2版本
1、下载openssl
wget http://www.openssl.org/source/openssl-1.0.2j.tar.gz
2、在文件夹下解压缩,得到openssl-1.0.2j文件夹
tar -xzf openssl-1.0.2j.tar.gz
3、进入解压的目录:
cd openssl-1.0.2j
4、设定Openssl 安装,( --prefix )参数为欲安装之目录,也就是安装后的档案会出现在该目录下:
./config --prefix=/usr/local/openssl
5、执行命令
./config -t
6.执行make,编译Openssl
make
7、安装
make install
7.修改python目录下的(注意是下载的python目录,不是安装后的)Modules/Setup.dist文件,搜索ssl,找到如下4行代码
取消注释,并且将SSL修改成自己的ssl安装目录,例如我的就是
SSL=/usr/local/openssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
从第3步的python编译安装开始,重新编译并且安装python,安装结束后
最后验证: