[Linux] CentOS7 中 pip3 install 可能出现的 ssl 问题

|cover


由于解决问题之后, 才写的博客, 所以没有图片记录.

尽量描述清楚一些

今天写代码的时候, 突然发现 文件里用了#define定义宏之后, coc.nvimcoc-clangd补全就用不了

:checkhealth了一下, 发现nvim忘记支持python3

尝试pip3 install neovim的时候, 发现会警告然后安装失败.

截图就没有了, 警告第一句大概是:

WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

大概的意思是Python安装没有编译支持 SSL/TLS 加密的模块, 如果没有 SSL/TLS 支持, 就可能无法安装某些需要安全连接的Python

然后, 就开始踩坑了

踩坑

先尝试重新编译安装python3:

# 没有解决问题, 不要尝试
# 去到python源码路径下 
make clean
./configure --prefix=/usr/local/python3 --with-ssl
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

出现这个的原因是, CentOS7执行sudo yum install openssl-devel安装的openssl版本是1.0.2太老了


然后我又去下载了openssl1.1.1的源码 并且按照官网文档进行了编译安装.

# 官方文档安装步骤
wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
tar zxvf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g
./config --prefix=/usr/local/openssl1.1.1 --openssldir=/usr/local/openssl1.1.1 no-ssl2
make
make install

# 安装完成之后, 还按照官方文档 添加了环境变量
export PATH=/usr/local/openssl1.1.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/openssl1.1.1/lib
export LC_ALL="en_US.UTF-8"
export LDFLAGS="-L /usr/local/openssl1.1.1/lib -Wl,-rpath,/usr/local/openssl1.1.1/lib"

然后, 重启了服务器, 执行openssl version会显示OpenSSL 1.1.1g 21 Apr 2020

再次去尝试编译安装python3:

# 没有解决问题, 不要尝试
# 去到python源码路径下 
make clean
./configure --prefix=/usr/local/python3 --with-ssl=/usr/local/openssl-1.1.1
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

但是, 明明已经安装了openssl1.1.1而且也指定了openssl1.1.1的库和软件

也把makefile里所有的/usr/local/openssl改成了/usr/local/openssl1.1.1

但还是没用.

解决

因为补全很重要, 所以一直在找怎么解决

终于, 在这篇提问中找到了解决方案:

https://stackoverflow.com/questions/60536472/building-python-and-openssl-from-source-but-ssl-module-fails

提问的某楼中提到, CentOS7可以直接用yum安装openssl1.1.1:

sudo yum install openssl11 openssl11-devel
mkdir /usr/local/openssl11
cd /usr/local/openssl11
ln -s /usr/lib64/openssl11 lib
ln -s /usr/include/openssl11 include

可以直接安装openssl1.1.1, 并将相应的库和包含 软连接到了 /usr/local/openssl11/lib/usr/local/openssl11/include

然后我再次 尝试重新编译安装python3:

# 去到python源码路径下 
make clean
./configure --prefix=/usr/local/python3 --with-ssl=/usr/local/openssl11
make

这一次make没有再报ssl相关错误:

然后make installpython3安装

安装成功之后, 进行软连接:

# 备份 python 和 pip
mv /usr/bin/python /usr/bin/python.bak
mv /usr/bin/python3 /usr/bin/python3.bak
mv /usr/bin/pip3 /usr/bin/pip3.bak
# 建立软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

然后 尝试执行pip3 install neovim:

没有再报 WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. 警告.

然后打开neovim执行:checkhealth

可以看到, python3成功被支持, coc.nvim也没有配置错误:

|inline

问题解决~

感谢阅读~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/43411.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络安全(黑客)自学路线笔记

一、什么是黑客? 黑客泛指IT技术主攻渗透窃取攻击技术的电脑高手,现阶段黑客所需要掌握的远远不止这些。 二、为什么要学习黑客技术? 其实,网络信息空间安全已经成为海陆空之外的第四大战场,除了国与国之间的博弈&am…

4.数据类型

JS数据类型整体分为两大类: ➢基本数据类型 ➢引用数据类型 4.1数据类型-数字类型(Number) 即我们数学中学习到的数字,可以是整数、小数、正数、负数。 let age 18 //整数 let price 88.99 //小数JavaScript中的正数、负数、小数等统一称为数字类型 注意…

【测试开发】Python+Django实现接口测试工具

PythonDjango接口自动化 引言: 最近被几个公司实习生整自闭了,没有基础,想学自动化又不知道怎么去学,没有方向没有头绪,说白了其实就是学习过程中没有成就感,所以学不下去。出于各种花里胡哨的原因&#xf…

关于 Qt中的QString内容存在\u0000使用QChart(0x00)消除 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131860574 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

解密动态内存管理的奥秘(含内存4个函数)

目录 一.为什么存在动态内存管理 二.动态内存函数的介绍 1. malloc函数(memory alloc 内存开辟) 函数介绍: malloc函数使用举例代码: 2.free(释放) 函数介绍: 代码的示例&#xff1a…

【Linux】初识多线程深入理解进程地址空间

目录 1 多线程的引入 1.1 相关概念 1.2 Linux操作系统理解多线程 特殊的进程结构 创建子进程的过程 创建多线程 进程与线程之间的关系 1.3 对多线程结构的管理 Windows管理多线程 Linux管理多线程 1.4 理解多线程与多进程相比,调度的成本更低 2 深入理…

MacOS上安装Portainer

Portainer介绍 Portainer 是一个很方便的 Docker 可视化管理工具。主要的功能包括: 管理 Docker 主机,可以添加和删除 Docker 主机管理容器,可以启动、停止、删除等容器管理镜像,可以搜索、拉取、删除镜像管理卷,可以查看、删除卷管理网络,可以创建 Docker 网络管理用户和角色…

OpenCv之车辆统计项目

目录 一、加载视频 二、去除背景 三、通过形态学识别车辆 四、对车辆统计 一、加载视频 代码如下: import cv2 import numpy as np import matplotlib.pyplot as plt# 视频加载 cap cv2.VideoCapture(2.mp4)# 循环读取视频帧 while True:ret,frame cap.read()if ret Tr…

DOS命令(windows)

DOS命令(windows) 目录 1. 打开命令提示符。2. 切换至根。3. 当前路径。4. 切换至上级路径。5. 查看当前目录。6. 查看文件内容。7. 删除文件。8. 进入长文件夹名时缩写。9. 复制文件。10. 移动文件。 1. 打开命令提示符。 命令:winR 输入&a…

CHI协议保序之Compack保序

一致性系统中,使用三种保序方式; Completion ack response ⭕Completion acknowledgment: □ 该域段主要是用来, □ 决定 RN 发送的 trans,与其他 RN 发送的命令产生的 SNP 之间的顺序; …

Scoop安装配置MySQL最详细版(含Navicat连接MySQL)

这是在DataWhale的第一次打卡文章,也是时隔三年再动笔,希望持续下去。 我没想到花费了一整天的时间来配置我的写作环境(TyporaPicGo腾讯云oss),因为我不想我的文字局限在某个平台上,很被动,想要…

python识别极验4滑块验证码实战

闲得无聊,趁着休息研究了一下极验4滑块验证码的安全性,是否有机器识别、自动化拖拽的可能性。首先看一下效果 如何识别验证码 1、下载图片 下载图片可以参考博客《采集极验4滑块验证码图片数据》 2、标记图片 3、标记滑动距离 实现代码 __author__ &…

Kotlin~Observer观察者模式

概念 定义一对多的依赖关系,让多个观察者同时监听一个主题对象。 角色介绍 Subject:主题,也称被观察者,它是具有状态的对象维护着一个观察者列表。提供添加、删除和通知观察者的方法。ConcreteSubject:具体主题&…

如何在armv6 armv7 armv8(aarch64)嵌入式板子上面安装nginx服务器,支持H265码流

如何在armv6 armv6 armv8 aarch64 嵌入式板子上面安装nginx服务器支持推送H265的视频流 开始吧 一,准备工作二,configure时遇到的出错问题1、checking for C compiler … found but is not working2,error: can not detect int size3&#xf…

【C++ 程序设计】第 1~9 章:常见知识点汇总

目录 一、C 语言简介 二、面向对象的基本概念 三、类和对象进阶 四、运算符重载 五、类的继承与派生 六、多态与虚函数 七、输入/输出流 八、文件操作 九、函数模板与类模板 一、C 语言简介 知识点名称内容C语言的发展简史★★1. C 语言是 C 语言的前身 &…

Flink写入数据到Doris

文章目录 1.Doris建表2.Doris依赖3.Bean实体类4.Doris业务写入逻辑5.测试写入类6.发送数据 1.Doris建表 Doris中建表 CREATE TABLE IF NOT EXISTS demo.user (id INT NOT NULL,name VARCHAR(255),age INT ) DISTRIBUTED BY HASH(id) PROPERTIES ("replication_num&qu…

顺丰基于 Flink CDC + Hudi 推进实时业务落地

摘要:本文整理自大数据研发高级工程师唐尚文,在 Flink Forward Asia 2022 数据集成专场的分享。本篇内容主要分为三个部分: 应用场景 实践与优化 未来规划 点击查看原文视频 & 演讲PPT 一、应用场景 1.1 顺丰集团业务概览 顺丰除了大家…

宝塔的Redis绑定IP

宝塔安装Redis 软件商店搜索Redis 连接宝塔面板的redis服务器失败的解决办法 检查Linux是否放行6379端口修改Redis绑定IP检查阿里云/腾讯云的防火墙策略是否放行6379端口 1.bind 127.0.0.1 修改为 bind 0.0.0.0 127.0.0.1 表示只允许本地访问,无法远程连接 0.0.0.0 表…

51单片机--AT24C02数据存储

文章目录 存储器的介绍AT24C02I2C总线I2C时序结构AT24C02数据帧AT24C02数据存储实例 存储器的介绍 存储器是计算机系统中的一种重要设备,用于存储程序和数据,它可以通过电子、磁性介质等技术来记录和保持数据。在这里,主要介绍的是随机存储器…

TableGPT: Towards Unifying Tables, Nature Language and Commands into One GPT

论文标题:TableGPT: Towards Unifying Tables, Nature Language and Commands into One GPT 论文地址:https://github.com/ZJU-M3/TableGPT-techreport/blob/main/TableGPT_tech_report.pdf 发表机构:浙江大学 发表时间:2023 本文…