0%

linux中更新python版本

在linux中更新python3的版本。

之前搞到一块rk3288的开发板,装好ubuntu server后下一步打算配置一下环境,于是就有了这篇踩坑记录。

我这块板子上装的系统是ubuntu server 14.04,版本比较老。里面的python3的版本是3.4,所以我想将其升级到3.8.1,不然nonebot2没法跑。

下载工具与python源码

首先我们先安装好gcc, make, git 这些基础工具以做好准备。

1
2
3

sudo apt install gcc make git

然后我们把python3.8.1的源码下载下来并解压,因为我们需要从源码来编译python3。

1
2
3
4

wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
tar -zxvf Python-3.8.1.tgz

编译前准备

但是此时我们是不能直接去python的源码下构建然后编译的,原因有以下几点

  • openssl 1.0.1是不安全的,所以python3需要1.0.2及以上版本,但是我们系统中的openssl版本为1.0.1。
  • 还有一些前置的包没有安装。

由于第二个好解决我们先来解决第二个。

1
2
3
4
5

sudo apt install libffi-devel -y

# 也许还需要其他的包,但是我不记得了,所以如果有其他错误再安装吧

下面我们来解决第一个问题,openssl也需要从源码构建。

编译安装openssl

这里参考的一篇博客

首先,我们也需要安装一些前置的包并下载下来源码

1
2
3
4
5
6

sudo apt-get install build-essential checkinstall libreadline-gplv2-dev libncursesw5-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
tar -zxvf openssl-1.0.2o.tar.gz

然后开始构建编译。

1
2
3
4
5
6
7

./config shared --prefix=/usr/local/

make -j4

sudo make install

至此,openssl应该安装完成了。我们输入openssl version可以查看版本。

编译python3

然后我们就可以正式来构建编译python3了。

1
2
3
4
5
6
7
8
9

cd Python3.8.1

./configure --prefix=/usr/local/python3 \--with-ssl \--enable-optimizations

make -j4

sudo make install

替换软链接

编译安装完成python3后我们需要更改软链接,不然还是没法用。

1
2
3
4
5

cd /usr/bin
sudo mv python3 python3.bak
sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3

然后我们输入python3 --version来查看python3版本是不是正确。

到这里我们虽然完成了pyhton3的安装,但是,pip3是不能使用的。

所以下一步我们是更改pip3的软链接。

1
2
3
4

sudo rm -rf /usr/local/bin/pip3
sudo ln -s /usr/local/Python3/bin/pip3 /usr/local/bin/pip3

然后我们来试试安装一个包,如果能安装,则说明没有问题了。

1
2
3

pip3 install requests