![Python自动化运维快速入门(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/405/47216405/b_47216405.jpg)
1.3.2 Linux系统下的Python安装
大多数Linux系统已经预装了Python 2,直接在终端窗口输入python即可查看版本(见图1.8)。以Ubuntu 20.04为例,运行python或python 3命令确认操作系统是否已经安装了Python。
![](https://epubservercos.yuewen.com/CB9CB3/26580839701182806/epubprivate/OEBPS/Images/Figure-P23_1482.jpg?sign=1739272773-4ziTNtnuSu63jhfYrcZAJfmhnC7iHuUO-0-000ed0a9e321674b1e26f363b8b1ee28)
图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所示。
![](https://epubservercos.yuewen.com/CB9CB3/26580839701182806/epubprivate/OEBPS/Images/Figure-P24_1510.jpg?sign=1739272773-7N8EqSCRZAB7VwUv6Ox5linRtMRbiyJr-0-2d86a0139465693b0f97310a7e778d94)
图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所示。如果下载其他版本,可以直接把版本号修改一下即可。
![](https://epubservercos.yuewen.com/CB9CB3/26580839701182806/epubprivate/OEBPS/Images/Figure-P24_1512.jpg?sign=1739272773-CCpkIRqLOVxCZhf6XF4jGH5PPLgoluTe-0-b7573be6472a81ae02ff69a221cb77a1)
图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命令安装所有依赖的库:
![](https://epubservercos.yuewen.com/CB9CB3/26580839701182806/epubprivate/OEBPS/Images/Figure-P25_56860.jpg?sign=1739272773-GmgNSNfEj2x6hwFomBZYY2qz8m9wJfxY-0-2a596a39d7ac95ff2923d6288e19f14b)
验证是否安装成功:输入/usr/local/python3.8.5/bin/python3,并打印“hello,python3!”,如图1.11所示。
![](https://epubservercos.yuewen.com/CB9CB3/26580839701182806/epubprivate/OEBPS/Images/Figure-P25_1633.jpg?sign=1739272773-EairOo7Ggn3JxLOTO96KQWdHkDYxV2yD-0-94bd3a747d84ae18512ffb3c5bff788f)
图1.11 Linux编译安装Python后验证
这样带路径的输入太长,有两种方法可以解决输入麻烦的问题。第一种是将Python 3.8.5的路径/home/aaron/local/python3.8.5/bin添加到环境变量中。在terminal中顺序执行以下命令,注意#后面的内容是注释,结果如图1.12所示。
![](https://epubservercos.yuewen.com/CB9CB3/26580839701182806/epubprivate/OEBPS/Images/Figure-P25_56861.jpg?sign=1739272773-26aEqFfdqWwcovpHoeOvYjdeKCvICS6P-0-46d2535bd6750c2fd51f9a321f4f37d4)
![](https://epubservercos.yuewen.com/CB9CB3/26580839701182806/epubprivate/OEBPS/Images/Figure-P25_1634.jpg?sign=1739272773-s1QOsSky1mUYluxRw9jYtGHXQx6YlX9F-0-0282be73bb9dae1e9437e01e14bfa1bb)
图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所示。
![](https://epubservercos.yuewen.com/CB9CB3/26580839701182806/epubprivate/OEBPS/Images/Figure-P26_56856.jpg?sign=1739272773-sFj2RySIsDlNtqxN6Yv9QZ0vlucwphc0-0-efe833794c747aaf303bf0f721c9d2a1)
图1.13 为编译安装的Python创建虚拟环境