写在前面的话

本文采取源码的方式安装 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. bzoj 1898 [Zjoi2005]Swamp 沼泽鳄鱼——矩阵快速幂

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1898 当然是邻接矩阵做转移矩阵来快速幂. 对于鳄鱼,好在它们周期的lcm是12,也就是每12 ...

  2. Azure VM Disk的设计与部署

    Azure的VM的设计中,Disk相关的设计是非常重要的一个内容,本文将介绍Azure上的VM的Disk相关的一些最佳实践和一些小的技巧. 一.Azure VM中Disk的存储账户设计 1. Stor ...

  3. HTTP-Runoob:HTTP简介

    ylbtech-HTTP-Runoob:HTTP简介 1.返回顶部 1. HTTP 简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网 ...

  4. 管理react路由的history对象的插件history的使用介绍

    本文介绍如何使用history插件管理浏览记录 history插件的使用 history这个插件可以方便管理你的浏览记录 cnpm install history --save import crea ...

  5. CDM中,实体与实体快捷方式之间的联系不能重复,否则会造成外键重复

    例如机场实体和跑道实体,例如: 在机场包中,跑道实体作为快捷方式出现,机场实体与跑道快捷方式实体间有连线关系,然而 在跑道包中,情况相反,但二者间也有连线.(模型原样) 要注意的是,虽然在两个包中都有 ...

  6. HeapCreate深入研究

    本机:win7(x86),4G内存 #include"stdafx.h"#include<windows.h>#include<stdio.h>#inclu ...

  7. mysql索引最左匹配原则的理解

    CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `ci ...

  8. Centos 7.2 编译安装 git

    一. 下载最新版GIT安装包: https://www.kernel.org/pub/software/scm/git/ 选择想要安装的版本,下载,解压 命令: .tar.gz $ cd git- 二 ...

  9. javascript——作用域与闭包

    http://www.cnblogs.com/lucio-yr/p/4047972.html 一.作用域: 在函数内部:用 var 声明的表示局部变量,未用var的是全局变量. 作用域取决于变量定义时 ...

  10. 没有dig命令的结觉方法

    -bash: dig: command not found rpm -qa bind-utils 查看没有没安装 bind-utils 包 yum install -y bind-utils 解决