众所周知,在 Linux 系统中均默认安装了Python2 的版本,但是有时候做开发需要用到 Python3,并需要通过 pip 来安装一些依赖和扩展,但是 Linux 安装 Python3 比较麻烦,并不能通过 命令 yum install python3 来实现一键安装,所以本人写了一个简单的 Shell 脚本来实现一键安装。


先来讲一下实现思路:(成品脚本见文末)

首先安装编译环境

sudo yum -y groupinstall "Development tools"


再安装依赖包,以下罗列依赖包缺一不可。

sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel


然后获取 Python3 的安装包(本例使用 Python 3.7.3)

wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz

如需安装其他版本,请移步这里 https://www.python.org/ftp/python/ 获取所需版本,然后替换上面 wget 后面的链接即可,后续步骤同时替换代码中的版本号。


解压安装包

tar -zxvf Python-3.7.3.tgz


切换到安装文件目录

cd Python-3.7.3


配置 Python 3.7.3 的安装目录

./configure --prefix=/usr/local/bin/python3


编译安装 Python3

sudo make && make install


创建 Python3 软链接

ln -s /usr/local/bin/python3/bin/python3 /usr/bin/python3


创建 pip3 软链接

ln -s /usr/local/bin/python3/bin/pip3 /usr/bin/pip3


最后在命令行中输入 python3,能够进入 python3 终端即成功安装 

[root@VM_135_138_centos ~]# python3
Python 3.7.3 (default, May 15 2019, 17:07:20)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

可以输入 exit() 退出 python3 终端。


手动一步一步的安装就需要这么多步骤,写成一键安装脚本之后只需要将安装脚本 Git 到目标系统然后赋权执行即可自动安装完成。


首先切换到 root 用户,然后下载安装脚本

git clone https://github.com/Tespera/AutoInstallPython3.git


赋予脚本执行权限

chmod +x AutoInstallPython3.sh


开始自动安装

./AutoInstallPython3.sh


当命令行显示如下信息时即表示安装成功

Installed Python and pip version is ... 
Python 3.7.3
pip 19.0.3 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)

Your Python and pip have been installed in follows directory...
/usr/local/bin/python3
/usr/local/bin/pip3

Install Successfully! Enjoy 😘!

[root@VM_135_138_centos ~]#


可以看到 Python 3.7.3 被安装到 /usr/local/bin/python3 目录下,pip3 被安装到 /usr/local/bin/pip3 目录下

现在在命令行输入 python3,可以看到能成功进入 python3 的终端,大功告成。就是如此简单。


这样安装完成之后,Python3 可以正常使用,且 Python2 也同时存在

可以输入以下命令查看

python3 -V &&  python -V

python3 -V   版本3(3.7.3) 

python -V   版本2(2.7.x)


各自对应的安装目录

which python3 && which python

/usr/bin/python3   版本3(3.7.3)

/usr/bin/python   版本2(2.7.x)


!-------分割线-------!

附脚本源码:

#!/bin/bash
#coding:utf-8

#判断当前登录的用户是否为root
if [ `whoami` != "root" ]
then
echo -e "\033[31m Current user is not root! Please switch root to try again! \033[0m"
else

#实现Press any key to continue ...
get_char(){

SAVEDSTTY=`stty -g`

#隐藏终端输入显示
stty -echo
stty cbreak

#dd等待用户按键 bs(block size)块大小=1,count总数=1,作用只取一个字符, 2> /dev/null 不显示任何信息
dd if=/dev/tty bs=1 count=1 2> /dev/null
stty -raw

#恢复终端显示
stty echo
stty $SAVEDSTTY
}

echo "Beginning install Python3.7.3, Press any key to continue ..."

char=`get_char`


#安装编译环境
echo "Start Install Development tools and Dependency package..."
sudo yum -y groupinstall "Development tools"

#安装依赖包
sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
echo -e "\033[32m Development tools and Dependency package Install Successfully! \033[0m"

#获取Python3.7.3安装包
echo "Start Download Python-3.7.3 install package..."
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
echo -e "\033[32m Download Python-3.7.3 install package Successfully! \033[0m"

#解压安装包
echo "Start Untar the Python-3.7.3 install package..."
tar -zxvf Python-3.7.3.tgz
echo -e "\033[32m Untar the Python-3.7.3 install package Successfully! \033[0m"

#切换到安装包目录
cd Python-3.7.3

#配置Python3的安装目录
./configure --prefix=/usr/local/bin/python3

#编译安装 Python3
echo "Start make install Python-3.7.3..."
sudo make && make install
echo -e "\033[32m Make install Python-3.7.3 Successfully! \033[0m"

#创建Python3软链接
ln -s /usr/local/bin/python3/bin/python3 /usr/bin/python3

#创建pip3软链接
ln -s /usr/local/bin/python3/bin/pip3 /usr/bin/pip3

#输出 Python3 及 pip3 的版本
echo -e "\nInstalled Python and pip version is ... "
python3 -V && pip3 -V

#输出 Python3 及 pip3 的安装目录
echo -e "\nYour Python and pip have been installed in follows directory... "
which python3 && which pip3

echo -e "\033[32m \nInstall Successfully! Enjoy 😘!\n \033[0m"

fi


刚学的 Shell ,不喜勿喷;初级 Shell 脚本,高手忽略😜。



Tespera

爱看书,爱看电影,偶尔也听听歌。喜欢写如诗的代码,热爱 IT 行业。熟悉 Web 前端开发,了解 C、Python、PHP 等计算机语言。

3 Comments
子非鱼 2019-04-30 23:22

"多年以来,我认识到,当你拥有真正优秀的人才时,你不必对他们太纵容,"乔布斯后来解释说:"你期待他们做出好成绩,你就能让他们做出好成绩。 最初的 Mac 团队让我知道,最顶级的人才喜欢一起工作,而且他们是不能容忍平庸作品的。你到那个 Mac 团队里随便找个人问问,他们会告诉你,那些痛苦都是值得的。"

Post your comment