写在前面的话

本文采取源码的方式安装 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的更多相关文章

  1. Linux CentOS 编绎安装Python 3.5

    Linux CentOS 编绎安装Python 3.5 先决条件(若无安装,则不能编绎使用idle3):yum install tk-devel xz -d Python-3.5.0.tar.xzta ...

  2. CentOS 6 下安装Python 3

    可以下载各个版本的python:https://www.python.org/ftp/python/ 配置安装 下载最新的安装包(截止2013/11/05),还是3.3.2版本. #wget http ...

  3. 如何在 CentOS 7 上安装 Python 3

    当前最新的 CentOS 7.5 默认安装的是 Python 2.7.5,并且默认的官方 yum 源中不提供 Python 3 的安装包.这里主要介绍两种在 CentOS 7 中安装 Python 3 ...

  4. 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 ...

  5. CentOS下编译安装python包管理安装工具pip教程

    ubuntu 安装pip 代码如下: apt-get install python-pip 安装requests, pip install requests 对于centos的,直接 yum inst ...

  6. centos 7下安装python 3.6笔记

    每次在centos上安装python 3都需要重新查资料,这次索性自己记下笔记. 首先安装gcc yum -y install gccyum install zlib-devel./configure ...

  7. 在centos上面编译安装python

    前言 因为在学习storm的过程中需要安装python,storm是部署在linux上面的,所以需要将python安装在linux上面. 安装准备 python下载 官网链接:https://www. ...

  8. 【原创】Centos 7 升级安装python3.7.4

    1.安装必须的软件 #更新源中包列表 yum -y update #先安装扩展源EPEL 才能安装pip 否则会报错 yum -y install epel-release //解决ssl问题,否则报 ...

  9. CentOS 6.5 安装Python 3.5

    1.CentOS6.5 安装Python 的依赖包 yum groupinstall "Development tools" yum install zlib-devel bzip ...

随机推荐

  1. Azure基于角色的用户接入控制(RBAC)

    RBAC是Role Based Access Control是基于角色的接入控制的简称.在Azure推出ARM以后,对Azure各种资源的管理粒度已经非常细致,使得RBAC成为可能. 通过RBAC可以 ...

  2. 机器学习:模型泛化(L1、L2 和弹性网络)

    一.岭回归和 LASSO 回归的推导过程 1)岭回归和LASSO回归都是解决模型训练过程中的过拟合问题 具体操作:在原始的损失函数后添加正则项,来尽量的减小模型学习到的 θ 的大小,使得模型的泛化能力 ...

  3. python第十一天-----补:缓存操作

    memcached,首先下载python-memcached模块,在cmd中执行pip install python-memcached即可 memcached比较简单,默认情况仅支持简单的kv存储, ...

  4. Python操作Excel,并结合unittest单元测试框架

    第一步:写Excel操作方法 excel_operate.py文件 from openpyxl import load_workbook #引入模块 class MyExcel: def __init ...

  5. iOS按home键后程序的状态变化

    iOS 的应用里的几种状态: active: 应用在前台正常运行 background: 应用在后台,并且在执行代码. inactive: 这个状态是应用从一个状态向另一个状态的过渡 suspende ...

  6. Java 中的关键字和保留字

    关键字: Java 语言中已经事先定义好了的,有着特殊含义和用途 访问控制 类.方法和变量修饰符 程序控制 异常处理 包相关 基本类型 变量引用 public abstract break try i ...

  7. Canopy聚类算法(经典,看图就明白)

    只有这个算法思想比较对,其他 的都没有一开始的remove: 原网址:http://www.shahuwang.com/?p=1021 Canopy Clustering 这个算法是2000年提出来的 ...

  8. Linux 正文处理命令及tar vi 编辑器 homework

    作业一: 1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cat /etc/passwd /etc/group >/1.txt 2) 将用户信息数据库文件和用 ...

  9. java反射专题三

    一丶调用运行时类中指定的属性 Class clazz = Person.class; //1.获取指定的属性 Field name = clazz.getField("name") ...

  10. div的作用

    <div></div>主要是用来设置涵盖一个区块为主,所谓的区块是包含一行以上的数据,所以在<div></div>的开始之前与结束后,浏览都会自动换行, ...