1.引言

Linux操作系统自带一个python2.7,没有python3,在开发的时候非常不便,因此需要安装一个python3,并且将python3设置系统默认python,同时还不能影响那些Linux系统中需要用python2的底层文件。

2. 方法

2.1 查看操作系统及Python基本信息

cat /etc/redhat-release    # 查看内核版本
python -V # 查看python版本
which python # 查看python路径

我这边的系统的内核为CentOS 7,默认python的版本为2.7.5,路径为/usr/bin/python。

然后我们导航到该目录,查看python相关文件的信息,可以看到python和python2指向的都是python2.7。

[root@libra-server ~]# cd /usr/bin

[root@libra-server bin]# ll python*    # 查看以python开头的文件信息
lrwxrwxrwx. 1 root root 7 Oct 15 2017 python -> python2
lrwxrwxrwx. 1 root root 9 Oct 15 2017 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 Aug 4 2017 python2.7

2.2 安装依赖包(编译,安装程序等所需)

yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel
yum -y install readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum -y install libffi-devel

(如果是RedHat/CentOS平台,用yum install;如果是Ubuntu/Debian平台,用apt-get install)

2.3 下载Python

到Python官方页面选择一个版本的Python:Python Source Releases,选择“XZ compressed source tarball

然后用wget命令下载到用户目录

[root@libra-server bin]# cd ~
[root@libra-server ~]# wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz

下载完毕后可以看到Python源码已经静静的躺在你的目录里了,

[root@libra-server ~]# ls
Python-3.7.4.tar.xz QQ9.0.9_1.exe wget-log

2.4 编译并安装Python

首先对刚刚下载的压缩包进行解压,

[root@libra-server ~]# tar -xvJf Python-3.7.4.tar.xz

进入解压后的目录,可以看到Python的源码文件,其中configure用来配置,配置完成后会生成用来安装的Makefile,

[root@libra-server ~]# cd Python-3.7.4
[root@libra-server Python-3.7.4]# ll
total 1060
-rw-r--r-- 1 501 501 10953 Jul 9 02:03 aclocal.m4
-rw-r--r-- 1 501 501 631 Jul 9 02:03 CODE_OF_CONDUCT.rst
-rwxr-xr-x 1 501 501 44166 Jul 9 02:03 config.guess
-rwxr-xr-x 1 501 501 36251 Jul 9 02:03 config.sub
-rwxr-xr-x 1 501 501 503641 Jul 9 02:03 configure
-rw-r--r-- 1 501 501 167840 Jul 9 02:03 configure.ac
drwxr-xr-x 18 501 501 4096 Jul 9 02:31 Doc
drwxr-xr-x 2 501 501 4096 Jul 9 02:03 Grammar
drwxr-xr-x 3 501 501 4096 Jul 9 02:03 Include
-rwxr-xr-x 1 501 501 7122 Jul 9 02:03 install-sh
drwxr-xr-x 33 501 501 4096 Jul 9 02:03 Lib
-rw-r--r-- 1 501 501 12769 Jul 9 02:03 LICENSE
drwxr-xr-x 2 501 501 4096 Jul 9 02:03 m4
drwxr-xr-x 8 501 501 4096 Jul 9 02:03 Mac
-rw-r--r-- 1 501 501 63658 Jul 9 02:03 Makefile.pre.in
drwxr-xr-x 2 501 501 4096 Jul 9 02:31 Misc
drwxr-xr-x 13 501 501 4096 Jul 9 02:03 Modules
drwxr-xr-x 4 501 501 4096 Jul 9 02:03 Objects
drwxr-xr-x 2 501 501 4096 Jul 9 02:03 Parser
drwxr-xr-x 6 501 501 4096 Jul 9 02:03 PC
drwxr-xr-x 2 501 501 4096 Jul 9 02:03 PCbuild
drwxr-xr-x 2 501 501 4096 Jul 9 02:03 Programs
-rw-r--r-- 1 501 501 43204 Jul 9 02:03 pyconfig.h.in
drwxr-xr-x 3 501 501 4096 Jul 9 02:03 Python
-rw-r--r-- 1 501 501 10113 Jul 9 02:03 README.rst
-rw-r--r-- 1 501 501 103776 Jul 9 02:03 setup.py
drwxr-xr-x 23 501 501 4096 Jul 9 02:03 Tools

配置安装目录,

[root@libra-server Python-3.7.4]# ./configure prefix=/usr/local/python3 --enable-optimizations

注:有时候如果加上开启优化选项 "--enable-optimizations",下面编译 make 时会报错“Fatal Python error: _PySys_BeginInit: can't initialize sys module”,可能和内核版本有关系,如果报错可以去掉该选项然后重新配置并编译。

编译并安装Python

[root@libra-server Python-3.7.4]# make
[root@libra-server Python-3.7.4]# make install

然后cd到 /usr/local,可以看到python3已经安装好了

[root@libra-server bin]# cd /usr/local/
[root@libra-server local]# ls
aegis bin etc games include lib lib64 libexec python3 sbin share src

2.5 将python3添加到系统命令

将 /python3/bin中的python3 软链到 /usr/bin/python,使以后执行 python 命令时都会指向 python3

[root@libra-server ~]# ln -s /usr/local/python3/bin/python3 /usr/bin/python

然后执行python,可以发现已经是3.7.4版本的了

[root@libra-server ~]# python
Python 3.7.4 (default, Aug 21 2019, 15:07:15)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

2.6 将需要python2的程序重定向到python2

由于yum需要python2,所以需要把yum文件重新指向python2

[root@libra-server ~]# vi /usr/bin/yum

然后将第一行的#!/usr/bin/python更改为#!/usr/bin/python2,yum就可以执行了。

同理,/usr/libexec/urlgrabber-ext-down 这个文件也做一下相同的操作

2.7 配置pip3

如下所示可以看到,pip3还没有添加进系统目录里,因此同样需要做一下软链。

[root@libra-server ~]# pip2 -V
pip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)
[root@libra-server ~]# pip -V
pip 9.0.1 from /usr/lib/python2.7/site-packages (python 2.7)
[root@libra-server ~]# pip3 -V
-bash: pip3: command not found

将原来的pip备份,然后把pip3软链到pip,这样以后执行pip就是pip3,pip2就是pip2了:

[root@libra-server ~]# mv /usr/bin/pip /usr/bin/pip.bak
[root@libra-server ~]# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
[root@libra-server ~]# pip -V
pip 19.0.3 from /usr/local/python3/lib/python3.7/site-packages/pip (python 3.7)

3. 结尾

基本上就是这样了,步骤基本上可以分为:

① 安装依赖库并备份原/usr/bin目录下的python

② 下载并编译安装python3

③ 建立python3和pip3的软链

④ 把需要python2的系统文件改写,重新指向python2

在阿里云CentOS服务器上安装Python3.7并设置为默认Python的更多相关文章

  1. 在阿里云Linux服务器上安装MySQL

    申请阿里云Linux服务器 昨天在阿里云申请了一个免费试用5天的Linux云服务器. 操作系统:Red Hat Enterprise Linux Server 5.4 64位. CPU:1核 内存:5 ...

  2. 在阿里云IIS服务器上安装证书

    在IIS服务器上安装证书 您可将下载的阿里云SSL证书安装到IIS服务器上,使您的IIS服务器支持HTTPS安全访问. 一.前提条件 申请证书时需要选择 系统自动创建CSR. 申请证书时如果选择手动创 ...

  3. 阿里云centos系统上安装ftp

    最近需要在一台阿里云的云服务器上搭建FTP服务器,在这篇博文中分享一下我们根据实际需求进行的一些配置. ftp软件用的是vsftpd. vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序 ...

  4. Linux学习总结(7)——阿里云centeros服务器上安装 jdk,tomcat,mysql

    查看服务器的系统版本 # cat /etc/issue 查看服务器是64位还是32位 #uname -a      或者用:#getconf LONG_BIT 查看当前有没有安装jdk #rpm -q ...

  5. 阿里云CentOS服务器下安装Golang1.13并配置代理

    注:root账户或添加sudo命令运行. 下载到/usr/local位置并解压 cd /usr/local wget https://studygolang.com/dl/golang/go1.13. ...

  6. 阿里云CentOs服务器 安装与配置mysql数据库

    阿里云CentOs服务器 安装与配置mysql数据库 以上为Linux安装mysql数据库 Linux 安装mysql 数据库 一下为mysql 安装教程 Using username "r ...

  7. 使用Navicat远程连接阿里云ECS服务器上的MySQL数据库

    一.必须给服务器的安全组规则设置端口放行规则,在管理控制台中设置: 之后填写配置,授权对象是授权的IP,其中0.0.0.0/0为所有IP授权,之后保存; 二.Navicat使用的配置 在编辑连接处,要 ...

  8. 在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境

    阿里云的云服务器(ECS)可以选择多种操作系统,打算用它运行 Drupal或者 WordPress ,你最好选择 Linux 系统,这篇文章的演示是基于阿里云的 CentOS 操作系统的服务器.我们在 ...

  9. 记 CentOS 服务器上安装 neo4j 图数据库及本地访问

    下载 去官网下载压缩包放到服务器上.地址为neo4j 下载中心,我这里选择的是 Neo4j 3.5.25 (tar).具体如何做呢?我这里使用的是土方法,即先压缩包下载到本地电脑(win 10系统), ...

随机推荐

  1. DDR3(3):写控制

    调取的 DDR3 控制器给用户端预留了接口,用于实现对该 IP 核的控制,本篇介绍一下 DDR3 IP核写.在生成 DDR3 IP 核的界面中,可以找到 User Guide 手册,DDR3 的使用将 ...

  2. java基础 接口常量

    /** * 接口当中也可以定义"成员变量", 但是必须使用public static final三个关键字进行修饰 * 从效果上看,这其实就是接口的[常用] * 格式: * pub ...

  3. C#多线程解决程序卡顿问题

    描述: 在 C# 中,System.Threading.Thread 类用于线程的工作.它允许创建并访问多线程应用程序中的单个线程.进程中第一个被执行的线程称为主线程. 案例: static void ...

  4. C#读写设置修改调整UVC摄像头画面-白平衡

    有时,我们需要在C#代码中对摄像头的白平衡进行读和写,并立即生效.如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的摄 ...

  5. C#——操作Word并导出PDF

    一.操作Word 首先引用这个DLL,Microsoft.Office.Interop.Word,官方提供的. 可以操作word文字,表格,图片等. 文字通过替换关键字的方式实现 document.P ...

  6. Vue相关知识点记录

    1.安装 vue不支持ie8以下版本(无法模拟ECMAScript5特性),支持所有兼容ECMAScript5的浏览器. 浏览器安装Vue Devtools, 可以在更友好的界面中审查和调试Vue应用 ...

  7. elementUI的导航栏在刷新页面的时候选中状态消失的解决

    首先elementUI的导航栏中的选中项的高亮显示时的字体颜色可以在属性中设置,但是高亮时的背景颜色不能设置,所以要自己修改高亮的背景颜色 .el-menu-item.is-active { back ...

  8. 26、router.beforeEach路由拦截

    为了防止用户未登录直接修改路径来访问页面,解决办法: 在main.js文件中加入以下代码: // 路由拦截 router.beforeEach((to, from, next) => { if ...

  9. 从 Vue 的视角学 React(三)—— 事件处理

    如果要处理某个元素的 click 事件,原生 js 可以直接为该元素添加一个 onclick 函数 Vue 封装了 v-on 指令,可以简化为 @click 并添加相应的函数 React 的开发思想是 ...

  10. 智能制造进入下半场?APS如何进行优化

    按照现在算法和计算机处理能力的发展,现在资源优化的方向已经逐渐摒弃,而是在更系统的“有限产能计划的”框架内一并解决产能和物料的问题. 我们所看到的新近涌现出来的很多APS系统.但碍于算法的复杂程度,在 ...