最新新配置了一台服务器。安装 的时候直接使用了最新的Python 3.7最新版本。

安装成功,编译成功。但是用pip 安装包的时候提示:pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available。

已经习惯了用pip安装各种包,突然不能用,还是非常 不习惯 。果断寻找解决方案。

搜索了一些资料,发现原因是python3.7为了安全性考虑,要求使用openssl 1.0.2之后的版本。但是服务器安装的时候,版本是1.0.1。

openssl是什么东西可以百度一下,其实就是加密传输相关的一些基础库。但是在Linux里面广泛使用。几乎所有的服务器都需要它支持。

可以通过openssl version查看SSL库版本号。

于是想到升级OpenSSL。此处坑来了。yum安装这些基础库最简单快捷,但是包括阿里云最新的yum镜像里面,也是使用的1.0.1的openssl。所以用yum 是无法升级的,需要手动编译。

于是安装最新的1.0.2希望能解决这个问题:

wget http://www.openssl.org/source/openssl-1.0.2j.tar.gz
tar -xzf openssl-1.0.2j.tar.gz
cd openssl-1.0.2j
./config
./config -t
make
make install
openssl version #查看版本

编译成功也能正常使用,但是pip依然不能使用,需要重装Python。于是

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
tar -xvJf Python-3.7.0.tar.xz
cd Python-3.7.0
./configure --with-ssl --enable-optimizations --with-openssl=/usr/local/openssl
make && make install

还是失败。于是在Make的时候仔细看了一下,发现另有错误信息。

Could not build the ssl module!
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381

还是找不到openssl 1.0.2。不知道是不是编译的流程有问题。按理说最简单的包应该没有什么问题。估计问题出在openssl安装好了之后,相关的系统的lib库没有更新。

于是继续搜索了一次。发现如果安装Open SSL 1.0.2。某些程序会报错。还有说安装openssl的时候,安装配置需要改

./config

改为

./config shared zlib

由于要赶时间使用。所以先用了简单方案。换回Python3.6.6使用。

安装方法:

wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
tar xzf Python-3.6.6.tgz
cd Python-3.6.6
./configure --enable-optimizations

make
make install

然后使用

curl https://bootstrap.pypa.io/get-pip.py | python3

安装pip,之后可以正常使用。

后续又搜索了一下安装和升级Openssl的方法。

1、安装依赖

yum install -y zlib

2、编译和安装

wget http://www.openssl.org/source/openssl-1.0.2j.tar.gz
tar -xzf openssl-1.0.2j.tar.gz
cd openssl-1.0.2j
./config shared zlib

./config -t
make
make install
openssl version #查看版本

mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl

#配置库文件搜索路径
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig -v

但是没有进行一波测试。因为线上已经使用python3.6在跑服务了。

理论上应该可行。

另外有意思的是python3.7官方推荐使用LibRessl进行SSL加密传输

https://www.libressl.org/

但是却没有相关的文档 ,怎么编译到python3.7里面。还是说直接安装了就会自动使用libressl,尚未可知。

谨慎安装Python3.7.0,SSL低版本导致Pip无法使用的更多相关文章

  1. centos下安装python3.7.0以上版本时报错ModuleNotFoundError: No module named '_ctypes'

    centos下安装python3.7.0以上版本时报错ModuleNotFoundError: No module named '_ctypes'的解决办法 3.7版本需要一个新的包libffi-de ...

  2. Linux 安装python3.7.0

    我这里使用的时centos7-mini,centos系统本身默认安装有python2.x,版本x根据不同版本系统有所不同,可通过 python --V 或 python --version 查看系统自 ...

  3. Linux下安装Python3.3.0

    Linux下安装Python3.3.0_路易_新浪博客 Linux下安装Python3.3.0 (2013-01-08 11:45:37)

  4. CentOS6.9下手动编译并安装Python3.7.0

    CentOS6.9默认安装的python版本为2.6.6,若想安装python3以上版本,只能手工编译安装 下面介绍Python-3.7.0版本的手动编译并安装的步骤 1.下载Python-3.7.0 ...

  5. Linux非root安装Python3以及解决SSL问题

    说明 接上一篇. [Linux]非root安装Python3及其包管理 上一篇虽然成功安装了Python3及一些常用的模块,但因为一直装不上SSL模块,导致一些包无法安装,尝试了不少方法都失败了(网上 ...

  6. CentOS安装python3.5.0+uwsgi+nginx

    1安装编译工具 yum install zlib-devel bzip2-devel openssl-devel python-devel kernel-devel libffi-devel ncur ...

  7. CentOS7中替换安装python3.7.0

    python3.7的安装包可从官网下载上传到主机,也可以用wget直接下载. [root@xxx ~]# cd /usr/local/src/[root@xxx src]# wget https:// ...

  8. Xcode 5.0 编译低版本app

    Xcode 5.0 默认的编译环境是iOS7,编译出来的app,安装到iOS7.0版本以上的手机上,会表现出iOS7.0的风格.兼容不太好的应用,布局上可能会因此乱八七糟. 如果还不想让app升级到i ...

  9. IOS 实现自定义的导航栏背景以及自定义颜色的状态栏(支持7.0以及低版本)

    为尊重文章原作者,转载务必注明原文地址:http://www.cnblogs.com/wt616/p/3784717.html 先看效果图: 在自定义导航栏背景时,可能会遇到以下一些问题: 1.当设置 ...

随机推荐

  1. 分布式集群Session原理及实现共享

    1.什么是Session/Cookie? 用户使用网站的服务,基本上需要浏览器与Web服务器的多次交互.HTTP协议本身是无状态的,当用户的第一次访问请求结束后,后端服务器就无法知道下一次来访问的还是 ...

  2. SpringBoot中使用hikariCP

    本篇文章主要实现SpringBoot中使用hikariCP: 一 .使用工具 1. JDK1.8 2. springToolSuit(STS) 3. maven 二.创建项目 1.首先创建一个Spri ...

  3. codeforces 738

    D: 题意:一行1*n的格子放船只,船数为a,船的长度为b,每格为0或1,1表示该格并不是船只的一部分,找出最少的格子数使得射击这些格子至少能打中一艘船. 思路:船的长度为b,即每段连续的长度为b的0 ...

  4. C3p0的参数

    C3p0的参数设置:ComboPooledDataSource和BasicDataSource一样提供了一个用于关闭数据源的close()方法,这样我们就可以保证Spring容器关闭时数据源能够成功释 ...

  5. Spring Boot 快速入门(Eclipse)

    步骤一:关于版本(前期工作) JDK 1.8 maven 3.5 配置环境变量: 步骤二:创建项目 首先新建个maven项目(SpringBoot 应用,本质上是一个Java 程序,其采用的风格是 m ...

  6. 利用ECharts开发的步骤

    引入Echarts的相关库文件,以及自定义的js文件 <script src="${pageContext.request.contextPath}/js/echarts/source ...

  7. Apache HTTP Server——官网下载

    Windows版 Apache 2.4.x OpenSSL 1.0.2 VC14  ——Apache 2.4.34 x64(注:x64就是64位,x86就是32位) https://www.apach ...

  8. vim与shell终端操作技巧

    一.快速注释多行代码 1.添加//注释符 :10,50s#^#//#g       使用#作为分隔符 2.删除//注释符 :10,50s#^//##g       使用#作为分隔符 3.添加#注释符 ...

  9. 换个思维,boot结合vue做后台管理

    可以添加,可以删除.动态的添加数据. 不用操作dom,只要操作json数据即可. <form class="form-horizontal addForm" id=" ...

  10. Nginx配置端口访问的网站

    server { listen 80; #listen [::]:80 default_server ipv6only=on; server_name www.website.com; index i ...