安装 python 3(centos 7.4)

python是一种解释型编程语言,与java、C不同,java、C都是编译型,这一点决定了python的运行速度要远低于java、C。
编译java需要安装JDK,运行java需要JRE,而python是解释型语言,不需要编译,因此只需要安装一个python解释器即可,官方的python解释器是Cpython。

安装python解释器

python解释器区分操作系统:

  • Windows版的下载后一路下一步即可(中间某一步只需勾选add environment variable)。
  • Linux上,需要下载源码,自行编译、安装。
      1. 下载源码(Version : Gzipped source tarball)
      wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
      
      1. 将源码解压到/home/{用户名}/python3中
      $ tar -zxvf Python-3.7.2.tgz
      
      1. 指定安装选项(比如安装到哪个目录、指定安装ssl模块)
      $ cd /home/{用户名}/python3
      $ ./configure --prefix=/usr/local/python3 --with-openssl=/usr/bin/openssl
      
      注:
      python 3 要求 openssl 的版本 大于等于 1.0.2、或者 LibreSSL 的版本 大于 2.6.4。
      如果不指定安装目录,python解释器会被分散到linux的多个目录中,不容易卸载,指定了目录后,卸载时只需要将这个目录删除即可;
      安装python应用程序依赖的库时需要用到pip,而安装pip时依赖python的ssl模块中的部分库,所以这里指定--with-ssl选项用来安装python的ssl相关的库。
      1. 编译
      $ make
      
      1. 安装
      $ make install
      
      注:
      这一步经常报错:zipimport.ZipImportError: can't decompress data; zlib not available
      这是因为缺少部分依赖的库导致的,安装相应的依赖库后再执行make install即可,依赖库的安装命令区分Debian系、RedHat系、openSUSE、Alpine、Mac,参考(解决办法)。
      centos上的命令:
      $ sudo yum -y install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel
      
    • 6.测试 SSL
      $ python3
      ...
      >>> import _ssl
      ImportError: No module named _ssl
      
      如果报错 ImportError: No module named _ssl,说明 SSL 模块安装失败,要重新 编译安装 python,在第2步之前,先修改 python3.7.2/Modules/Setup、python3.7.2/Modules/Setup.dist,取消掉下面 5 行的注释符,并指定 ssl 的路径:
      _socket socketmodule.c
      
      SSL=/usr/include/ssl
      _ssl _ssl.c \
           -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
           -L$(SSL)/lib -lssl -lcrypto
      
      注意:SSL有可能在/usr/include/openssl,自己
      然后重新执行第 2-5 步骤 即可。
      参考命令:
      $ find / -name "openssl"
      $ openssl version
      $ python -V
      $ whereis python
      $ ls -al /usr/bin | grep python
      $ makedir /home/{用户名}/Python3.7.2
      $ chown root:root /home/{用户名}/Python3.7.2
      $ chmod +777 /home/{用户名}/Python3.7.2

同时存在多个python版本的善后问题

  • 善后工作1:
    比如 centos 7.4 操作系统,自带的 python 版本为2.7.5,安装完 python 3 之后,需要修改 /usr/bin/python 的指向,将其指向 由 /usr/bin/python2.7 改为 /usr/local/python3/bin/python3,命令如下:
$ mv python python.bak
$ ln -s /usr/local/python3/bin/python3 /usr/bin/python
  • 善后工作2
    centos 的 yum 命令是依赖 python 的,centos 自带的 python 版本是 2,我们安装了 python 3 后,修改了 /usr/bin/python 的指向(由 python 2 改成了 python 3),部分 yum 命令可能无法使用,因此还是让 yum 依赖 python 2 吧,操作步骤如下:
    修改 /usr/bin/yum、/usr/libexec/urlgrabber-ext-down 这2个文件的第一行,将#!/usr/bin/python改成#!/usr/bin/python2.7,这样就可以了。

你可能感兴趣的:(安装 python 3(centos 7.4))