述尔

^


纯Shell脚本实现CentOS7一键安装Python3及pip3并与Python2共存

碎碎念 • 阅读: 6355

众所周知,在 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 脚本,高手忽略。

文章标签: Python, Shell, CentOS7
点此生成 >> 文章海报


上一篇 : Shell 脚本实现网站及数据库定时自动备份
下一篇 : 多吃苹果有利于身体健康,但“黑苹果”除外
留言