安装步骤

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文件的如下内容:

  1. #找到SSL相关配置
  2. #SSL=/usr/local/ssl
  3. #_ssl _ssl.c \
  4. # -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
  5. # -L$(SSL)/lib -lssl -lcrypto
  6.  
  7. #取消掉上面4行注释,即
  8. SSL=/usr/local
  9. _ssl _ssl.c \
  10. -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
  11. -L$(SSL)/lib64 -lssl -lcrypto
  12.  
  13. #SSL= 后面跟的是OpenSSL的安装路径,比如说我的安装路径是/usr/local/openssl,那就修改为
  14. 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

CentOS7.6编译安装Python-3.7.4的更多相关文章

  1. centos7.6编译安装php7.2.11及redis/memcached/rabbitmq/openssl/curl等常见扩展

    centos7.6编译安装php7..11及redis/memcached/rabbitmq/openssl/curl等常见扩展 获取Php的编译参数方法: [root@eus-api-cms-bac ...

  2. centos7下编译安装php-7.0.15(PHP-FPM)

    centos7下编译安装php-7.0.15(PHP-FPM) 一.下载php7源码包 http://php.net/downloads.php 如:php-7.0.15.tar.gz 二.安装所需依 ...

  3. Linux Centos7.2 编译安装PHP7.0.2

    操作环境: 1.系统:Centos7.2 2.服务:Nginx 1.下载PHP7.0.2的安装包解压,编译,安装: $ cd /usr/src/ $ wget http://cn2.php.net/d ...

  4. 编译安装python

    编译安装python 1.下载python3的原码包 1.1下载到到opt目录中 cd /opt 1.2下载python3的原码包 wget https://www.python.org/ftp/py ...

  5. CentOS7.6编译安装openssl-1.1.1c

    卸载旧版本OpenSSL # which openssl/usr/bin/openssl# mv openssl openssl.oldrm -rf /etc/ssl #删除配置文件 CentOS7. ...

  6. CentOS7下编译安装redis-5.0.9

    CentOS7下编译安装redis-5.0.9 本文地址http://yangjianyong.cn/?p=171转载无需经过作者本人授权 下载redis #code start wget https ...

  7. centos7编译安装Python 3.6.8 后用pip3出现SSL未配置问题(import ssl失败)解决方法

    下载源码编译安装openssl https://www.openssl.org/source/openssl-1.0.2j.tar.gz ./config --prefix=/usr/local/op ...

  8. CentOS 6.7 final编译安装Python 2.7.11

    CentOS 6.7默认的Python版本为2.6.6,现升级为Python 2.7.11 1.安装编译环境 yum groupinstall "Development tools" ...

  9. CentOS6.4 编译安装Python 3.3.2 - CRPER木木

    基础环境: CentOS6.4(预装GCC,或者联网YUM---GCC编译写进这里太臃肿,找机会另外写一篇) Python 3.3.2     下载链接: http://www.python.org/ ...

随机推荐

  1. Failed! Error: Unknown error 1130

    如有需要可以加我Q群[308742428]大家一起讨论技术,有偿服务. 后面会不定时为大家更新文章,敬请期待. 喜欢的朋友可以关注下. 在使用navicat远程连接mysql报了一个错误信息 Fail ...

  2. Apache Shiro反序列化远程代码执行

    一.漏洞利用 wget https://raw.githubusercontent.com/sv3nbeast/ShiroScan/master/moule/ysoserial.jar 反弹shell ...

  3. 【扯淡篇】CTSC/APIO/SDOI R2时在干什么?有没有空?可以来做分母吗?

    注意: 我比较弱, 并没有办法把外链bgm搞成https, 所以大家可以选择"加载不安全的脚本"或者把https改成http以获得更好的阅读体验! 据说, 退役了要写写回忆录. 但 ...

  4. MySql为某个表增加rownumber

    在mySql中,假设表名为tblA,则 select @x:=@x+1 as rownumber, a.* from (select @x:=0) b, tblA a 此语句执行后,则每行数据之前都会 ...

  5. 记录我个人对Telegram的了解

    对Telegram(电报) 开始的了解是以为提供了Telegram API,就可以基于它进行开发自己的即时通讯(Instant Messaging)程序. 大概使用过: webogram 和 tele ...

  6. 数组循环移动 空间复杂度O(1)

    ---恢复内容开始--- 题目大意: 输入元素个数,输入数组,输入右移步数,输出结果: 基本思路: 可以把数组(从下标为0开始存储)看成两部分,分别是[0,n-step-1],[n-step,n-1] ...

  7. HTML5 原生API input file 来实现多图上传,并大图预览

    闲来无事,突然想用原生来实现图片的多图上传. 一.效果图大致如下: 1.上传时可以选择多图 2.上传之后缩略图下过图如下: 3.点击缩略图,大图展示当前所点击的图片,并可以左右滑动查看其它的缩略图对应 ...

  8. springcloud笔记一

    微服务的概述 什么是微服务? 现今微服务界没有一个统一的.标准的定义 微服务化的核心就是将统一的一站式应用,根据业务拆分成一个一个的服务,彻底的去耦合,每一个微服务提供单个业务功能的服务,一个服务做一 ...

  9. 【Flutter学习】基本组件之文本组件Text

    一,概述 文本组件(Text)负责显示文本和定义显示样式, 二,继承关系 Object > Diagnosticable > DiagnosticableTree > Widget ...

  10. JCF——List

    ArrayList LinkedList Vector