用习惯了linux的程序员们都知道,所以原来linux内核3以上的都自带python2 ,然而,python3发布至今也十余年了,2020年1月1日 Python 2终于走到了尽头,官方宣布不在维护python2。所以升级势在必然。
博主环境:腾讯云 Centos7.5
一、更新python2 至python3
1. 从Python官网到获取Python3的包, 切换到目录/usr/local/src
wget https://www.python.org/ftp/python/3.7.2/Python-3.7.5.tar.xz
由于博主是1M学习用的比较low带宽的云主机,下载python3.7安装包比较慢,最高15kb/s 最低1.8kb/s,当然重要原因也是因为python官方镜像源在国外有关,总之,这一步花了40分钟。
2. 使用命令如下命令进行解压缩:
xz -d Python-3.7.5.tar.xz
tar -xf Python-3.7.5.tar
3. 在/usr/local路径下创建目录--python37, 为第4步的安装目录
mkdir /usr/local/python37
4. 编译安装(会自动安装pip-7.1.2)
yum install -y zlib zlib-devel
yum install libffi-devel -y
复制代码
cd Python-3.7.5
./configure --prefix=/usr/local/python37
make all
make install
make clean
make distclean
复制代码
5. 进入安装的绝对路径,检查是否安装成功
/usr/local/python37/bin/python3.7 -V
Python 3.7.2
6.查看环境变量,启动python时默认按照PATH的顺序进行查找,在/usr/bin中的python此时为Python2.7的。
echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/gordon/bin
7.修改软连接,启动python时指向python3.7
(1) 备份python
mv /usr/bin/python /usr/bin/python.bak
(2) 修改软连接
ln -s /usr/local/python37/bin/python3 /usr/bin/python
8. 验证默认是否启动python3.7
python -V
Python 3.7.5
9. 升级完python之后,yum就不能用了,需要修改/usr/bin/yum,改为使用python2.7
vim /usr/bin/yum
#!/usr/bin/python2.7
10.[root@centos75 ~]# vim /usr/libexec/urlgrabber-ext-down
#!/usr/bin/python2
二、下载和安装pip
1、安装必要的依赖包(一般巨头云镜像包自带了,除非原生版)
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
2、下载安装setuptools
wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26
tar -zxvf setuptools-19.6.tar.gz
cd setuptools-19.6
python3 setup.py build
python3 setup.py install
3、下载安装PIP
wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-19.2.3.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb
tar -zxvf pip-19.2.3.tar.gz
cd pip-19.2.3
python setup.py build
sudo python setup.py install
4、设置软连接(非常关键)
ln -sv /usr/local/python37/bin/pip /usr/bin/pip
三、升级Openssl(解决No module named _ssl问题)
1.下载最新版openssl
https://www.openssl.org/source/openssl-1.1.1-pre8.tar.gz
tar xf openssl-1.1.1-pre8.tar.gz
2.编译安装
cd openssl-1.1.1-pre8
./config--prefix=/usr/local/openssl no-zlib #不需要zlib
make
make install
3.备份原配置
mv/usr/bin/openssl /usr/bin/openssl.bak
mv/usr/include/openssl/ /usr/include/openssl.bak
4.新版配置
#将安装好的openssl 的openssl命令软连到/usr/bin/openssl
[root@aaa]# ln-s/usr/local/openssl/include/openssl /usr/include/openssl
#软链到升级后的libssl.so
[root@aaa]# ln-s/usr/local/openssl/lib/libssl.so.1.1 /usr/local/lib64/libssl.so
#将安装好的openssl命令软连到/usr/bin/openssl
[root@aaa]# ln-s/usr/local/openssl/bin/openssl /usr/bin/openssl
5.修改系统配置
#写入openssl库文件的搜索路径
echo"/usr/local/openssl/lib">>/etc/ld.so.conf
#使修改后的/etc/ld.so.conf生效
ldconfig-v
6.查看openssl版本
openssl version
OpenSSL1.1.1-pre8(beta)20Jun2018
重新安装python
注意:需要指定openssl的安装路径,--with-openssl
./configure--prefix=/usr/local/python37--with-openssl=/usr/local/opensslmakemake install