![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=1738826622-NMfPkzbJWeYuvBA2VDyz8GvXkA0t6WlO-0-5a875dc1b743e6bf591bc1a52712f98a)
图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=1738826622-QiWL592PmydmMQbxMk4ekM2eo8LQmWfR-0-b938fa3c8aca7d8448b08ef8de94ae4c)
图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=1738826622-IcoryYs1BTulbJGhxLbGgQ3ItXc1dUDb-0-2ad810fe28e6a66510d081b5cb2aa02e)
图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=1738826622-e5EaNJYMNmR3fdcSDGC4cAjL01jq6sER-0-037c5ec7c1e8cbd6e4c5421609f12667)
验证是否安装成功:输入/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=1738826622-SuUbP3TeRA1aMNek8L5bW7r1qx0ygWSq-0-126d3c69d94c64fd2dd01494c66e4a48)
图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=1738826622-h2CAHKIN2Snc22u22kFM7P3NVn5wZLJB-0-eb1b207a7e9f970a1291a51ebb84b968)
![](https://epubservercos.yuewen.com/CB9CB3/26580839701182806/epubprivate/OEBPS/Images/Figure-P25_1634.jpg?sign=1738826622-lFChaiDEn9fYUcLe00FApwnDB5oOa8QA-0-b28d86ae8aed614336178cc9c1648cd0)
图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=1738826622-W2VSH4JeDlKxR8mZFtGYrW6HEllZw8hm-0-55ef176779236ff8e022ab5c603baa79)
图1.13 为编译安装的Python创建虚拟环境