Linux更新openssl版本,以解决Python的requests库 import失败

写了一个python 小教本,当我放在我的服务器上运行时候发现报错了,今天就来写一下这个报错的解决过程。

报错原因

# coding=utf-8
# !/usr/bin/python
import requests. #这是第三行代码
import re
from datetime import datetime
import json
....
#当我用python xx.py执行时候,报以下错误:
Traceback (most recent call last):
  File "/hu/news/xx.py", line 3, in <module>
    import requests
  File "/usr/local/lib/python3.9/site-packages/requests/__init__.py", line 43, in <module>
    import urllib3
  File "/usr/local/lib/python3.9/site-packages/urllib3/__init__.py", line 41, in <module>
    raise ImportError(
ImportError: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fips  26 Jan 2017'. See: https://github.com/urllib3/urllib3/issues/2168

由以上日志可得报错原因是代码第三行,我引用了requests库,但是requests库里的urllib3依赖openssl1.1.1+版本,但我的服务器openssl版本是 1.0.2k,所以解决的方法就是更新我服务器上的openssl版本为1.1.1+

解决过程

先安装相关依赖,执行命令 yum install perl-core zlib-devel -y即可

  1. 执行 wget https://github.com/openssl/openssl/releases/download/openssl-3.1.1/openssl-3.1.1.tar.gz 获取最新版本的openssl
  2. 解压缩安装包tar -zxvf openssl-3.1.1.tar.gz ,然后进入openssl3.1的目录cd openssl-3.1.1/
  3. 指定安装路径 /config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
  4. 执行 make 进行编译,等make完毕后 执行 make install 进行安装
  5. echo "/usr/local/ssl/lib64" > /etc/ld.so.conf.d/openssl.conf 执行这个命令来配置链接库,本质上就是新增了一个openssl配置文件,将里面的引用改成最新的
  6. 执行 ldconfig -v 来更新最新的链接
  7. 执行 whereis openssl 就可以看到原来的openssl是装在usr/bin目录下的。输出是:openssl: /usr/bin/openssl
  8. 现在我们刚刚装的是装在了/usr/local/ssl/bin目录下。所以下一步我们要进行替换,用local目录下的替换掉bin目录下的
  9. 执行 cp /usr/local/ssl/bin/openssl /usr/bin/openssl 来覆盖原来的openssl
  10. 执行 ldconfig -v 再次刷新
  11. 输入 openssl version 若输出是 OpenSSL 3.1.1 30 May 2023 (Library: OpenSSL 3.1.1 30 May 2023) 则证明成功了!

    虽然折腾到了这里,不过最简单的解决办法,应该是降低requests库的版本,安装一个低版本的requests

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇