python版本升级详细教程
sudo apt update# 检查Python版本python --version# 输出Command 'python' not found, did you mean: command 'python3' from deb python3 command 'python' from deb python-is-python3# 检查Python版本python3 --version# 输出Python 3.8.2
如图1所示,我们可以看到 Python 2 默认无法使用,且 Python 3.8 是在 Ubuntu 20.04 LTS 上预安装的
您可以从下一小节继续,使用 PPA 或者源代码编译安装最新版本的Python。
在 Ubuntu 20.04 LTS 上不推荐 —— 可选项,也许您希望在继续下一节之前使用如下命令完全删除Python。在删除现有的Python 3.8 之前请务必仔细检查,因为还有几个包和程序依赖于它。如果您不确定,请保留系统上安装的现有版本的Python,因为我们可以在同一系统上安装多个版本的Python。
# 删除 Python —— 在运行前请再三确认
# 这也会移除所有依赖于此的包,包括 gimp, mysql 等
sudo apt purge python3
提示:我的系统在运行了上面的步骤之后崩溃了。
使用 PPA 源安装 Python
使用如下所示的命令安装 Python 3.9 。在一些情况下,不推荐使用 PPA 安装 Python。在这种情况下,您可以按照下一节的方法从源代码安装。
# 更新包目录sudo apt update# 安装依赖sudo apt install software-properties-common# 添加 deadsnakes PPA 源sudo add-apt-repository ppa:deadsnakes/ppa# 按下 Enter 以继续# 安装 Python 3.9sudo apt install python3.9
上述命令将在 /usr/lib/python3.9
安装 Python 3.9。默认的Python 3(即 Python 3.8)仍然安装于 /usr/lib/python3.8
。现在使用如下所示的命令验证安装。
# 检查 Python 版本python3.8 --version# 检查版本Python 3.8.2# 检查 Python 版本python3.9 --version# 检查版本Python 3.9.0
您也可以使用相同的步骤通过相同的 PPA 源安装旧版本的Python,如 Python 3.6、Python 3.7。安装路径会是 /usr/lib/python3.6
和 /usr/lib/3.7
。通过这种方式,我们可以在同一系统上安装多个版本的Python。
使用源代码安装 Python
在这一小节中,我们将通过源代码安装 Python 3.9,而不像上一节那样使用 PPA。
# 刷新包目录sudo apt update# 卸载 上一小节使用 PPA 安装的 Python 3.9sudo apt purge python3.9# 刷新包目录sudo apt update# 安装依赖sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev
现在使用 wget 下载最新的 Python 3.9 发布,如下所示。
译者注:3.9.0早已不是最新版,请读者访问 https://www.python.org 检查当前最新的版本
# Download Python 3.9.0sudo wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tar.xz
下载完成后解压
# 解压tar -xf Python-3.9.0.tar.xz
现在从源代码编译构建Python,并使用如下所示的命令安装它。make命令会花费一点时间来从源文件构建二进制文件。此外,使用 altinstall
选项来避免覆盖现有的安装
# 切换目录cd <path to download location>/Python-3.9.0# 检查依赖sudo ./configure --enable-optimizations# Make - 编译安装 Python - 这会费点时间,休息一下再回来吧sudo make# 或者 - 指定使用的处理器核心数sudo make -j 4# 安装二进制文件sudo make altinstall# Switch active Python# 切换活动的 Pythonsudo update-alternatives --config python3# 不会为 python3 显示任何选项# 检查安装python3 --version# 呈现版本Python 3.8.2# 检查安装python3.9 --version# 呈现版本Python 3.9.0
上面的命令将安装 Python 3.9 的最新版本,但不会像上面所示的那样可以通过 python3
命令使用它。下一节详细说明了从命令行使用 python3 命令调用 Python 3.9 的步骤。
切换默认版本(可选项)
如果您已经安装了多个次要版本的Python,如 python3.6、python3.7、python3.9 等,您可以使用下面提到的命令来使用 python3
命令替代命令行中的 python3.6
、python3.7
、python3.9
等。我们也可以通过配置active命令切换到其他版本
注意:将 python3
配置为使用 PPA 或源代码安装的 Python 将禁用 python3 的默认安装(即 python3.8)。您可以使用不同的命令而不是 python3 以避免系统差异。
# 添加使用 python3.7 的 python3 选项sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1# 添加使用 python3.8 的 python3 选项sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 2# 添加使用 python3.9 的 python3 选项sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 3# 确认版本python3 --version# 呈现版本Python 3.9.0
由于我们提供了在多个python3版本之间切换的选项,所以可以使用如下所示的命令切换活动版本。
# 切换活动的 Python 版本sudo update-alternatives --config python3
如图二所示,我使用了本地安装的 Python 3.9
一旦我们启用命令 python3
来引用我们使用源代码安装的Python 3.9,终端就会停止工作。因此在关闭终端之前确保将其fix固定。如果您不小心关闭了终端,您也许可以安装 terminology 来修复终端,如下所示。
# 更新终端脚本sudo nano /usr/bin/gnome-terminal# 替换第一行以使用 Python 3.8#! /usr/bin/python3.8
除了破坏终端之外,在运行 sudo apt-get update
命令时,还会出现错过 apt_pkg
的错误,如下所示。
ubuntu@ubuntu:~$ sudo apt-get update
Hit:1 http://us.archive.ubuntu.com/ubuntu focal InRelease
Hit:2 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu focal InRelease
Get:3 http://security.ubuntu.com/ubuntu focal-security InRelease [107 kB]Get:4 http://us.archive.ubuntu.com/ubuntu focal-updates InRelease [111 kB]Get:5 http://us.archive.ubuntu.com/ubuntu focal-backports InRelease [98.3 kB]
Fetched 317 kB in 3s (104 kB/s)
Traceback (most recent call last): File "/usr/lib/cnf-update-db", line 8, in <module> from CommandNotFound.db.creator import DbCreator File "/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py", line 11, in <module> import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'Reading package lists... Done
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi'E: Sub-process returned an error code
apt_pkg可以使用如下所示的命令修复。
# Navigate to default Python 3 cd /usr/lib/python3/dist-packages/# 修复 apt_pkgsudo ln -s apt_pkg.cpython-38-x86_64-linux-gnu.so apt_pkg.so
您还可以回退并修复 python3
命令,如下所示。
# 移除 python3 链接sudo rm /usr/bin/python3# 回退到 python3.8sudo ln -s /usr/bin/python3.8 /usr/bin/python3# 更新终端脚本sudo nano /usr/bin/gnome-terminal# 替换第一行以使用 Python 3#! /usr/bin/python3
您可以使用其他简称替换 python3 ,或者简单地使用 python3.9
以从终端访问(从源代码安装的)最新版本的 Python。
这就是在 Ubuntu 20.04 LTS 上安装最新的 Python 的方法。我们还学习了如何在同一系统上安装和切换多个版本的 Python。
Hello World
在这一节中,我们将会使用 nano 编辑器写我们的第一个Python程序。
> sudo mkdir -p /data/programs/python
> cd /data/programs/python
> sudo nano helloworld.py
现在用Python编写第一个程序,如下所示,按 Ctrl + O 再按 Enter 以保存程序,然后按 Ctrl + X 退出编辑器。
# 打印 Hello Worldprint("Hello World !!")
使用我们安装的 python3 来运行程序,如下所示
# 运行程序python3 helloworld.py# 或者python3.9 helloworld.py# 程序输出Hello World !!
这就是写和运行Python程序的基本步骤。
总结
本教程提供了在Ubuntu 20.04 LTS上安装Python 3.9的步骤,并展示了在同一系统上管理多个Python版本的方法。