1.3.2 Linux系统下的Python安装

大多数Linux系统已经预装了Python 2,直接在终端窗口输入python即可查看版本(见图1.8)。以Ubuntu 20.04为例,运行python或python 3命令确认操作系统是否已经安装了Python。

图1.8 Ubuntu Docker镜像

实际上,Ubuntu 20.04已经预装了Python 2和Python 3,笔者这里没有预安装,由于它是Ubuntu Docker镜像。Ubuntu系统可以通过apt命令快速安装新版本的Python 3,先执行apt update,再执行apt install python3.8即可快速安装python 3.8.2,如图1.9所示。

图1.9 Ubuntu apt安装Python 3.8.2

如果想省事,则可以直接使用预安装的Python 3或apt安装的Python 3.8.2来学习;如果喜欢使用自己安装的特定版本,如Python 3.8.5,则可以按以下步骤进行源代码编译安装。

下载源代码包:wget http://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz,如图1.10所示。如果下载其他版本,可以直接把版本号修改一下即可。

图1.10 下载Python 3.8.5

解压源代码包。

tar -zxvf Python-3.8.5.tgz

编译与安装。

cd Python-3.8.5 #进入解压后的目录
./configure --prefix=/usr/local/python3.8.5  #指定安装目录
make && make test && make install            #编译并安装

如果提示缺失相关的依赖包,如zlib,请apt安装如:apt install zlib1g-dev,或下载相应源码编译安装。也可以执行下述shell命令安装所有依赖的库:

验证是否安装成功:输入/usr/local/python3.8.5/bin/python3,并打印“hello,python3!”,如图1.11所示。

图1.11 Linux编译安装Python后验证

这样带路径的输入太长,有两种方法可以解决输入麻烦的问题。第一种是将Python 3.8.5的路径/home/aaron/local/python3.8.5/bin添加到环境变量中。在terminal中顺序执行以下命令,注意#后面的内容是注释,结果如图1.12所示。

图1.12 为Python添加环境变量

第二种是建立软链接。在terminal中执行:

sudo ln -s /usr/local/python3.8.5/bin/python3 /usr/bin/python3 #建立python 3的软
连接
sudo ln -s /usr/local/python3.8.5/bin/pip3.8 /usr/bin/pip3#建立pip3.8的软连接

创建虚拟环境:在terminal中顺序执行以下语句。

which pip3.8      #查看pip3.8的位置
pip3.8 install virtualenv

提示

如果这一步报/usr/local/xxx/python3.8找不到错误,请编辑上一步路径中的pip3.8文件,将第一行改为安装路径中的python 3.8,本例中为#!/usr/local/python3.8.5/bin/python3.8。

如果报subprocess.CalledProcessError: Command 'lsb_release -a' returned non-zero exit status 1的错误,则执行:

ln -s /usr/share/pyshared/lsb_release.py
/usr/local/python3.8.5/lib/python3.8/site-packages/lsb_release.py

这一步把原有的lsb_release.py链接到我们安装的路径下,然后执行:

pip3.8 install virtualenv
virtualenv -p python3.8 projectA_env #这里的python 3即编译安装的python 3.8.5
source projectA_env/bin/activate

这里的-p参数表示指定Python编译器的版本,Python 3.8是指向我们安装的/home/aaron/local/python3.8.5/bin/python3.8,输入:

deactivate

退出projectA的虚拟环境,完整过程如图1.13所示。

图1.13 为编译安装的Python创建虚拟环境