在Ubuntu 16.04.6 LTS上升级python2.7或者python3.5到3.7实录

原因

我想安装一个python模块,发现只能使用pip3安装,但是我发现我的Ubuntu 16.04.6 LTS上有python3.5,但是没有pip3,也无法成功安装,真是要了我的老命!网上调研一番后,发现直接从python的官网下载最新的python3.7的源码来升级python3这个思路是最可行的办法。因为python3只是一个python3.5中python3命令指向的符号链接,可以非常轻易地修改它。

可以看出,目前python官网上最新的python3版本是3.7.3。最后即使安装了python3.7版本之后也不要删除python2.7和python3.5版本,防止后面ubuntu系统中的依赖丢失。
在Ubuntu 16.04.6 LTS上升级python2.7或者python3.5到3.7实录_第1张图片

安装依赖库

sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev 
sudo apt-get install liblzma-dev libffi-dev libc6-dev

从python官网下载
方法一:https://www.python.org/downloads/release/python-373/

方法二:wget ‘https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz’

tar zxvf Python-3.7.3.tgz
cd Python-3.7.3
sudo mkdir -p /usr/local/python3
./configure --prefix=/usr/local/python3  --enable-optimizations
make
sudo make install

在Ubuntu 16.04.6 LTS上升级python2.7或者python3.5到3.7实录_第2张图片
在Ubuntu 16.04.6 LTS上升级python2.7或者python3.5到3.7实录_第3张图片删除软链接
先执行查看版本,如果有则证明软链接已存在,需要先删去以前的再重新建立

sudo rm -rf /usr/bin/python3
sudo rm -rf /usr/bin/pip3

建立新的软连接
#添加python3的软链接

sudo ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3

#添加 pip3 的软链接

sudo ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3

#安装对应的pip

wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py

检测版本

python3 -V
pip3 -V
在Ubuntu 16.04.6 LTS上升级python2.7或者python3.5到3.7实录_第4张图片
查看python3的版本号
在这里插入图片描述

安装过程总结

绝大数开源软件都是公布源代码的,源代码一般被打包为tar.gz归档压缩文件,然后手工编译为二进制可执行文件

./configure  检查编译环境/相关库文件/配置参数,生成makefile
make      对源代码进行编译,生成可执行文件
make install    将生成的可执行文件安装到当前计算机中特点;

兼容性好/可控制性好/开源软件会大量使用其他开源软件的功能,要解决大量的依赖关系

安装有报错问题时

安装python37报错:ModuleNotFoundError: No module named ‘_ctypes’

出现的问题

问题1

1.zipimport.ZipImportError: can’t decompress data; zlib not available Makefile:1130: recipe for target ‘install’ failed make: *** [install] Error 1

解决办法:
安装zlib1g-dev

sudo apt install zlib1g-dev

2.ModuleNotFoundError: No module named ‘_ctypes’
Makefile:1130: recipe for target ‘install’ failed
make: *** [install] Error 1

解决办法:
方法一:

sudo apt-get install --reinstall zlibc zlib1g zlib1g-dev
sudo apt-get install libffi-dev libssl-dev libreadline-dev -y

方法二:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev (已安装至此)
sudo apt-get install libssl-dev openssl
sudo apt-get install libffi-dev

然后从./configure --prefix=/usr/local/python3 --enable-optimizations步骤开始重新安装。

问题2

终端打不开的问题:
将ubuntu自带的python3.5 升级为3.7,并且换了软连接。python 连接为python3.7,发生了终端打不开的问题。

1.Ctrl + Alt + f1
2.打开/usr/bin/gnome-terminal 将首行的 #!/usr/bin/python3 修改为 #!/usr/bin/python3.5

cd /usr/lib/python3/dist-packages/gi/

下面的35 改成37 表示从py3.5 改到py3.7,如果安装的是3.6就改成36

sudo cp _gi_cairo.cpython-35m-x86_64-linux-gnu.so  _gi_cairo.cpython-37m-x86_64-linux-gnu.so
sudo cp _gi.cpython-35m-x86_64-linux-gnu.so _gi.cpython-37m-x86_64-linux-gnu.so

问题3(不能随便删除 lsb_release,会影响 lsb_release 的模块使用)

subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1.

解决方法

find / -name lsb_release
rm -rf /usr/bin/lsb_release

借鉴:https://www.cnblogs.com/momolei/p/9895218.html
https://www.jianshu.com/p/81e65f237368

你可能感兴趣的:(Ubuntu,系统相关)