安装步骤
1. 下载安装包。
wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz
<说明>如果报SSL/TSL错误,则加上 --no-check-certificate 选项
2. 解压缩
tar -xzvf Python-3.7.4.tgz
cd Python-3.7.4
3. 配置
* 查看配置选项。
./configure --help
* 常用配置选项配置
--prefix=/usr/local/python3 #pyhton的安装路径
--with-openssl=/usr/local/openssl #OpenSSL库的安装路径
* 如果您想要一个包含所有稳定优化活动的版本构建,可以添加下面的选项(不过一般不需要,这个配置检查过程会很耗时的)
--enable-optimizations
* 查看系统是否安装了OpenSSL
rpm -qa|grep -i openssl
* 查看OpenSSL版本
openssl version -a #会显示出OpenSSL的安装路径
* 我的安装配置选项
./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl --with-ssl-default-suites=python
4. 编译和安装。
make && make install
设置环境变量
* 建立python命令的软链接
ln -s /usr/local/python3/bin/python3.7 /usr/local/bin/python
* 修改/etc/profile,添加如下内容:
export PATH=$PATH:/usr/local/python3/bin
保存后,执行: source /etc/profile
* 执行命令查看安装版本
# python --version
Python 3.7.4
* 直接运行Python命令,检测是否安装成功
# python
Python 3.7.4 (default, Sep 10 2019, 01:13:53)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
# 当输出上面的信息表示Python-3.7.4安装成功了。
pip工具的设置
Python-3.7.4版本是自带有pip工具的,安装成功后,在安装路径/usr/local/python3/bin下有pip3和pip3.7两个可执行文件。
* 建立pip3命令的软链接
ln -s /usr/local/python3/bin/pip3.7 /usr/local/bin/pip3
* 查看pip的版本信息:pip3 -V/--version
* 查看帮助信息:pip3 -h/--help 或者 pip3 help
安装过程遇到的问题
1. ModuleNotFoundError: No module named '_ctypes'
这个需要安装依赖库libffi-devel,执行命令如下:
yum install libffi-devel -y # -y表示对所有的提问都回答yes
2. pip工具安装Python三方库时报pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
这个需要安装OpenSSL依赖库,安装Python-3.7.4之前先安装OpenSSL,最好是安装openssl-1.1.x版本的。安装Python成功后,执行如下命令:
# python
Python 3.7.4 (default, Sep 10 2019, 23:12:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
如果不报错,这说明ssl设置成功了。可以使用pip install <package>来安装Python第三方库了。
题外话:我在网上看到,要结果ModuleNotFoundError: No module named '_ssl'的错误,需要修改Python-3.7.4/Modules目录下的Setup.dist和Setup文件的如下内容:
#找到SSL相关配置 #SSL=/usr/local/ssl #_ssl _ssl.c # -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl # -L$(SSL)/lib -lssl -lcrypto #取消掉上面4行注释,即 SSL=/usr/local _ssl _ssl.c -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl -L$(SSL)/lib64 -lssl -lcrypto #SSL= 后面跟的是OpenSSL的安装路径,比如说我的安装路径是/usr/local/openssl,那就修改为 SSL=/usr/local/openssl,可以通过openssl version -a命令查看安装路径。
但是,我觉得这个比较麻烦,我的安装过程是没有修改Modules目录下的Setup.dist和Setup的这两个文件的,但是import ssl仍然是成功的,没有报错。
Reference
ImportError: No module named _ssl解决方法 https://blog.csdn.net/xiemanR/article/details/85224509
centos7.3编译安装OpenSSL1.1.1b https://cloud.tencent.com/developer/article/1406810
centos6.8安装python3.7.3报错Can't connect to HTTPS URL because the SSL module is not available问题解决 http://www.mamicode.com/info-detail-2713977.html
CentOS7.6编译安装openssl-1.1.1c https://www.cnblogs.com/yunfan1024/p/11504039.html