python -- NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+

报错分析

  • 完整的报错:urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'LibreSSL 2.8.3'. See: https://github.com/urllib3/urllib3/issues/3020
  • 报错分析:LibreSSL 是 OpenSSL 的一个分支,LibreSSL 2.8.3 与OpenSSL 1.1.1版本相似(有差异)。Mac版python里的ssl默认使用LibreSSL 2.8.3 编译,也就是OpenSSL 1.1.1。而urllib3 v2仅支持OpenSSL 1.1.1以上的版本,因此MAC版python里的ssl版本落后了。

解决办法:

  1. 升级LibreSSL(没用,LibreSSL升级了但是python里的ssl库没更新)
shell 复制代码
# 查看当前用户,确保非root(id 不为0)
whoami
# 查看是否是root
id -u

# 修改目录权限
sudo chown -R $(whoami) /opt/homebrew

# 升级libressl
brew update
brew upgrade libressl

# 设置libressl环境变量
echo 'export PATH="/opt/homebrew/opt/libressl/bin:$PATH"' >> ~/.zshrc
# 设置编译器环境变量:为了让编译器找到 LibreSSL
echo 'export LDFLAGS="-L$(brew --prefix openssl)/lib"' >> ~/.zshrc 
echo 'export CPPFLAGS="-I$(brew --prefix openssl)/include"' >> ~/.zshrc

# 使生效
source ~/.zshrc

# 查看版本
openssl version
>LibreSSL 3.9.1
  1. urllib3降级(可行,但有种越混越回去的感觉)
shell 复制代码
pip install 'urllib3<2.0'
  1. 虚拟环境单独安装对应版本的urllib3 和 OpenSSL

  2. 重新源码编译python

shell 复制代码
./configure --with-openssl=$(brew --prefix openssl)
# ./configure --with-openssl=$(brew --prefix libressl)

make
sudo make install
  1. 忽略警告
shell 复制代码
import warnings
from urllib3.exceptions import NotOpenSSLWarning
warnings.filterwarnings("ignore", category=NotOpenSSLWarning)
相关推荐
zzywxc7874 分钟前
详细探讨AI在金融、医疗、教育和制造业四大领域的具体落地案例,并通过代码、流程图、Prompt示例和图表等方式展示这些应用的实际效果。
开发语言·javascript·人工智能·深度学习·金融·prompt·流程图
关山11 分钟前
MCP实战
python·ai编程·mcp
浮灯Foden17 分钟前
算法-每日一题(DAY13)两数之和
开发语言·数据结构·c++·算法·leetcode·面试·散列表
悠哉悠哉愿意27 分钟前
【Python语法基础学习笔记】if语句
笔记·python·学习
淡海水31 分钟前
【原理】Struct 和 Class 辨析
开发语言·c++·c#·struct·class
Q_Q196328847536 分钟前
python的电影院座位管理可视化数据分析系统
开发语言·spring boot·python·django·flask·node.js·php
BYSJMG1 小时前
计算机大数据毕业设计推荐:基于Hadoop+Spark的食物口味差异分析可视化系统【源码+文档+调试】
大数据·hadoop·分布式·python·spark·django·课程设计
杜子不疼.1 小时前
《Python学习之第三方库:开启无限可能》
开发语言·python·学习
青川入梦1 小时前
MyBatis极速通关上篇:Spring Boot环境搭建+用户管理实战
java·开发语言·mybatis
CC__xy2 小时前
04 类型别名type + 检测数据类型(typeof+instanceof) + 空安全+剩余和展开(运算符 ...)简单类型和复杂类型 + 模块化
开发语言·javascript·harmonyos·鸿蒙