CENTOS 7 升级安装 Python 3.5

本文采取源码的方式安装 Python 3.5.2,如果是其它版本会有或多或少的差异,且写这篇的时候官网最新的是 Python 3.7,个人使用 3.5 就足够了,没必要更新到最新,否则出现未知 BUG 你都不知道该找谁!
特别说明,本文安装之后系统的默认 Python 版本将变成 3.5.2,但是这并不影响本身 2.7 的使用!
文章最后附带了 CENTOS 7 升级 Python 3 的一键安装脚本!
|
服务
|
版本
|
|
操作系统
|
CentOS Linux release 7.5.1804
|
|
远程工具
|
Xshell 5
|
|
Python
|
3.5.2
|
【1】Python 下载地址:
https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tar.xz
【2】安装常见依赖包:
yum -y install zlib-devel bzip2-devel wget openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
【3】上传源码包到 /usr/local/src 并解压:
cd /usr/local/src/ # 解压
xz -d Python-3.5.2.tar.xz
tar -xf Python-3.5.2.tar
【4】编译安装:
# 编译安装
cd Python-3.5.2
./configure --prefix=/usr/local/python35 --enable-shared CFLAGS=-fPIC
make && make install
【5】添加环境变量:
# 添加环境变量
echo 'export PATH=$PATH:/usr/local/python35/bin' >>/etc/profile
【6】添加新的 Python 命令指向:
# 修改系统默认的 Python 2.7
rm -f /usr/bin/python
ln -s /usr/local/python35/bin/python3 /usr/bin/python
ln -s /usr/local/python35/bin/pip3.5 /usr/bin/pip
【7】修改库依赖,避免使用报错:
ldd /usr/local/python35/bin/python3
如图:

备注:可以看到这里有一个 not found,解决办法如下:
cp /usr/local/python35/lib/libpython3.5m.so.1.0 /lib64/
再度查看:

【8】生效环境变量:
source /etc/profile
【9】修改 yum 配置:如果不修改,yum 将无法使用!
# 修改 yum
sed -i "s#/usr/bin/python#/usr/bin/python2.7#g" /usr/bin/yum
sed -i "s#/usr/bin/python#/usr/bin/python2.7#g" /usr/libexec/urlgrabber-ext-down
【10】查看升级结果:

【11】配置 pip:
# 升级 PIP 和安装 virtualenv
pip install --upgrade pip
pip install virtualenv
【12】CENTOS 7 Python 3 升级完成!
#!/bin/bash ###################################################################
# author: Dylan
# useage: Update Python 3.5
################################################################### ###################################################################
# 输出颜色定义
###################################################################
Color_Text() {
echo -e " \e[0;$2m$1\e[0m"
} Echo_Red() {
echo $(Color_Text "$1" "")
} Echo_Green() {
echo $(Color_Text "$1" "")
} Echo_Yellow() {
echo $(Color_Text "$1" "")
} ###################################################################
# 变量定义
###################################################################
# Python 版本
Python_Version='3.5.2' # Python 安装包
Python_Package="Python-${Python_Version}" # Python 下载地址
Python_Url="https://www.python.org/ftp/python/${Python_Version}/${Python_Package}.tar.xz" # 下载路径
Download_Path='/usr/local/src' # 安装路径
Install_Path='/usr/local/python35' ###################################################################
# 网络检查函数
###################################################################
NETWORK_CHECK() {
ping www.baidu.com -c 3
if [ $? != 0 ];then
Echo_Red "该服务器无法连网,请配置服务器网络!"
exit 1
fi
} ###################################################################
# 升级 Python 函数
###################################################################
PYTHON_UPDATE() { # 检查网络
NETWORK_CHECK # 安装依赖
Echo_Yellow "==========================================================================="
Echo_Green '安装依赖:'
Echo_Yellow "==========================================================================="
yum -y install zlib-devel bzip2-devel wget openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make # 检查 Python 版本
Echo_Yellow "==========================================================================="
Echo_Green '当前版本 Python:'
Echo_Yellow "==========================================================================="
/usr/bin/python -V
Echo_Yellow "===========================================================================" # 选择确认
read -p "是否继续升级 Python [y/n]:" Chose_Number
case ${Chose_Number} in
[yY][eE][sS]|[yY])
Echo_Yellow "你选择的是yes,升级继续进行..."
;;
[nN][oO]|[nN])
Echo_Yellow "你选择的是yes,升级即将终止..."
exit
;;
*)
Echo_Red "输入错误,即将退出升级..."
exit
esac # 下载安装包
Echo_Yellow "==========================================================================="
Echo_Green "开始从网上下载 ${Python_Package}..."
Echo_Yellow "==========================================================================="
cd ${Download_Path}
wget ${Python_Url}
if [ $? != 0 ];then
Echo_Red "网上下载 ${Python_Package} 失败,请检查!"
exit 1
fi Echo_Yellow "==========================================================================="
Echo_Green "${Python_Package} 下载成功,即将开始升级..."
Echo_Yellow "==========================================================================="
Echo_Green "开始解压 Python ..."
Echo_Yellow "==========================================================================="
xz -d ${Python_Package}.tar.xz && tar -xf ${Python_Package}.tar
if [ $? != 0 ];then
Echo_Red "${Python_Package} 解压失败,请检查!"
exit 1
fi cd ${Python_Package}
Echo_Yellow "==========================================================================="
Echo_Green "开始安装 Python ..."
Echo_Yellow "==========================================================================="
./configure --prefix=${Install_Path} --enable-shared CFLAGS=-fPIC
make -j 4 && make install
if [ $? != 0 ];then
Echo_Red "${Python_Package} 编译失败,请检查!"
exit 1
fi # 配置环境变量
Echo_Yellow "==========================================================================="
Echo_Green "修改环境变量 ..."
Echo_Yellow "==========================================================================="
echo "export PATH=\$PATH:${Install_Path}/bin" >>/etc/profile # 修改原有的 Python 为新的
Echo_Yellow "==========================================================================="
Echo_Green "替换旧版 Python ..."
Echo_Yellow "==========================================================================="
mv /usr/bin/python /tmp
ln -s ${Install_Path}/bin/python3 /usr/bin/python
ln -s ${Install_Path}/bin/pip3.5 /usr/bin/pip # 修改库文件
Echo_Yellow "==========================================================================="
Echo_Green "修改 Python 库文件 ..."
Echo_Yellow "==========================================================================="
ldd ${Install_Path}/bin/python3
cp ${Install_Path}/lib/libpython3.5m.so.1.0 /lib64/ # 修改 yum 配置
Echo_Yellow "==========================================================================="
Echo_Green "修改 yum ..."
Echo_Yellow "==========================================================================="
sed -i "s#/usr/bin/python#/usr/bin/python2.7#g" /usr/bin/yum
sed -i "s#/usr/bin/python#/usr/bin/python2.7#g" /usr/libexec/urlgrabber-ext-down # 使配置生效
source /etc/profile
. /etc/profile # 升级 PIP
Echo_Yellow "==========================================================================="
Echo_Green "升级 PIP ..."
Echo_Yellow "==========================================================================="
pip install --upgrade pip
pip install virtualenv # 查看升级后版本
Echo_Green '当前版本 Python(请手动执行:source /etc/profile):'
Echo_Yellow "==========================================================================="
/usr/bin/python -V
Echo_Yellow "==========================================================================="
} ###################################################################
# 开始升级 Python
###################################################################
Echo_Yellow "==========================================================================="
Echo_Green '作者:Dylan'
Echo_Green '备注:QQ:1214966109'
Echo_Yellow "==========================================================================="
sleep 2
PYTHON_UPDATE
我个人是一直在用这种安装方式升级 Python,多环境推荐使用 virtualenv,如果你安装有问题,也可以通过上我博客首页的 QQ 与我取得联系,让我对这篇进行完善。
CENTOS 7 升级安装 Python 3.5的更多相关文章
- Linux CentOS 编绎安装Python 3.5
Linux CentOS 编绎安装Python 3.5 先决条件(若无安装,则不能编绎使用idle3):yum install tk-devel xz -d Python-3.5.0.tar.xzta ...
- CentOS 6 下安装Python 3
可以下载各个版本的python:https://www.python.org/ftp/python/ 配置安装 下载最新的安装包(截止2013/11/05),还是3.3.2版本. #wget http ...
- 如何在 CentOS 7 上安装 Python 3
当前最新的 CentOS 7.5 默认安装的是 Python 2.7.5,并且默认的官方 yum 源中不提供 Python 3 的安装包.这里主要介绍两种在 CentOS 7 中安装 Python 3 ...
- c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具
c#实例化继承类,必须对被继承类的程序集做引用 0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Cu ...
- CentOS下编译安装python包管理安装工具pip教程
ubuntu 安装pip 代码如下: apt-get install python-pip 安装requests, pip install requests 对于centos的,直接 yum inst ...
- centos 7下安装python 3.6笔记
每次在centos上安装python 3都需要重新查资料,这次索性自己记下笔记. 首先安装gcc yum -y install gccyum install zlib-devel./configure ...
- 在centos上面编译安装python
前言 因为在学习storm的过程中需要安装python,storm是部署在linux上面的,所以需要将python安装在linux上面. 安装准备 python下载 官网链接:https://www. ...
- 【原创】Centos 7 升级安装python3.7.4
1.安装必须的软件 #更新源中包列表 yum -y update #先安装扩展源EPEL 才能安装pip 否则会报错 yum -y install epel-release //解决ssl问题,否则报 ...
- CentOS 6.5 安装Python 3.5
1.CentOS6.5 安装Python 的依赖包 yum groupinstall "Development tools" yum install zlib-devel bzip ...
随机推荐
- 寻找php.ini之旅
/usr/local/php-fpm/lib/php.ini 可以通过phpinfo()来查看 https://www.cnblogs.com/ChineseMoonGod/p/6474772.htm ...
- JDK 8 - JVM 对类的初始化探讨
在<深入理解 Java 虚拟机>(第二版,周志明著)中,作者介绍了 JVM 必须初始化类(或接口)的五种情况,但是是针对 JDK 7 而言的. 那么,在 JDK 8 中,这几种情况有没有变 ...
- 聊聊 SQL Joins
SQL 中的 Join 有以下几种类型: 1.Cross Join 交叉连接,没有条件筛选,返回笛卡尔积. 如果以 ,(逗号)分隔表名进行查询如 select * from tbl_name1, tb ...
- Mysql 关键字-保留字
ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE BEFORE BETWEEN BIGINT BINARY BLOB BOTH BY CALL CASCADE C ...
- Druid 0.2.25版本hive jdbc 不支持 conn.getHoldability() 兼容处理问题
背景: 用Druid做Oracle的连接池感觉还不错,近日新项目要用Hive,故而也想使用Duid来做Hive的连接池.试了试果真可以,也没报错.但是,过了一段时间,同样的代码却出问题了.离奇的是我同 ...
- altium designer 中器件原理图库中,将一个器件分成几部分是如何操作的?就是如何用part表示?
在SCH Library的Components中选中你要添加part的器件,tools菜单--new part即可
- asp.netcore di 实现批量接口注入
废话少说,先上代码 public static Dictionary<Type, Type[]> GetImpleAndInterfaces(string assemblyName,str ...
- 开发环境入门 linux基础 (部分)nginx和nfs
nginx和nfs 复习总结 rpm -ivh 软件包 --nodeps (没有依赖性安装) rpm -ivh 软件包 --force (覆盖安装) yum -y upgrade 升级所有包,不改变软 ...
- javascript——对象的概念——创建对象与销毁对象
一.创建对象 1.创建空对象 方式一: var o ={};o; //Object {} typeof(o); //"object" 方式二: var o=new Object() ...
- MySQL中的多表插入更新与MS-SQL的对比
MySQL多表插入: INSERT INTO tdb_goods_cates (cate_name) SELECT goods_cate FROM tdb_goods GROUP BY goods_c ...