zoukankan      html  css  js  c++  java
  • 在阿里云CentOS服务器上安装Python3.7并设置为默认Python

    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

  • 相关阅读:
    《Programming in Lua 3》读书笔记(十)
    《Programming in Lua 3》读书笔记(九)
    《Programming in Lua 3》读书笔记(八)
    [原]NYOJ-括号匹配-2(java)
    [原]NYOJ-字符串替换-113
    [原]NYOJ-小光棍数-458
    [原]NYOJ-公约数和公倍数 -40
    [原]NYOJ-开灯问题-77
    [原]NYOJ-数的位数-69
    [原]NYOJ-大数阶乘-28
  • 原文地址:https://www.cnblogs.com/xinzaiyuan/p/12059326.html
Copyright © 2011-2022 走看看