python是一种解释型编程语言,与java、C不同,java、C都是编译型,这一点决定了python的运行速度要远低于java、C。
编译java需要安装JDK,运行java需要JRE,而python是解释型语言,不需要编译,因此只需要安装一个python解释器即可,官方的python解释器是Cpython。
安装python解释器
python解释器区分操作系统:
- Windows版的下载后一路下一步即可(中间某一步只需勾选add environment variable)。
- Linux上,需要下载源码,自行编译、安装。
-
- 下载源码(Version : Gzipped source tarball)
wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
-
- 将源码解压到/home/{用户名}/python3中
$ tar -zxvf Python-3.7.2.tgz
-
- 指定安装选项(比如安装到哪个目录、指定安装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相关的库。 -
- 编译
$ make
-
- 安装
注:$ 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
如果报错 ImportError: No module named _ssl,说明 SSL 模块安装失败,要重新 编译安装 python,在第2步之前,先修改 python3.7.2/Modules/Setup、python3.7.2/Modules/Setup.dist,取消掉下面 5 行的注释符,并指定 ssl 的路径:$ python3 ... >>> import _ssl ImportError: No module named _ssl
注意:SSL有可能在/usr/include/openssl,自己_socket socketmodule.c SSL=/usr/include/ssl _ssl _ssl.c \ -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ -L$(SSL)/lib -lssl -lcrypto
然后重新执行第 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
,这样就可以了。