1. 下载 python3.7.1
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc2.tgz
2. 解压
tar xvf Python-3.7.1rc2.tgz
3. 安装编译依赖
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
4. 配置、编译
cd Python-3.7.1rc2
# 配置安装路径等
./configure --prefix=/usr/local/python3.7 --enable-optimizations --with-ensurepip=install
# 编译
make
5. 安装
# 正常编译,会创建软链接
sudo make install
# 不创建软链接
sudo make altinstall
6. 为新安装的python创建软链接
ll /usr/local/python3.7/bin
运行上面命令查看安装后的可执行文件,其中python3.7是指向python3.7的软链接,pip3.7是指向pip3.7的软链接,只需要在/usr/bin/目录下添加这两个文件的软链接即可,删除原来的软链接,然后重新指定即可
# 删除
sudo rm /usr/bin/python3
sudo rm /usr/bin/python
sudo rm /usr/bin/pip3
sudo rm /usr/bin/pip
# 创建软链接
sudo ln -s /usr/local/python3.7/bin/python3.7 /usr/bin/python
sudo ln -s /usr/local/python3.7/bin/python3.7 /usr/bin/python3
sudo ln -s /usr/local/python3.7/bin/pip3.7 /usr/bin/pip3
sudo ln -s /usr/local/python3.7/bin/pip3.7 /usr/bin/pip
配置完成后python3就是指python3.7.1了
6. 重新配置 update-alternatives
删除 update-alternatives 列表中的所以选项然后重新添加
7. 补充
自己在 ubuntu 上安装的 python 会缺少 lsb_release.py 所以要运行下面命令,将 lsb_release.py 拷贝过来
sudo cp /usr/lib/python3/dist-packages/lsb_release.py /usr/local/python3.7/lib/python3.7
自己安装 python 并替代掉默认的 python 可能会导致终端打不开,原因是没有_gi这个库,然后你把原来系统中的库改个名就可以了
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
如果 python 安装到是默认目录,这样应该就好了,如果没有安装到默认路径,就把整个gi拷贝到 /usr/local/python3.7/bin/python3.7 下对应目录就OK
$ cp -r /usr/lib/python3/dist-packages/gi /usr/local/python3.7/bin/python3.7/site-packages/
usr/lib/python3/dist-packages/gi /usr/local/python3.7/bin/python3.7/site-packages/