ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with LibreSSL 2.8.3

回答 6 浏览 7.4万 2023-05-06

pip install openai之后,当我尝试import openai时,它显示以下错误:

the 'ssl' module of urllib3 is compile with LibreSSL not OpenSSL

我刚刚学习了一个关于使用 OpenAI API 的项目教程。但是当我到达第一步,即安装并导入 OpenAI 时,我陷入了困境。我试图找到该错误的解决方案,但一无所获。

这是我尝试导入 OpenAI 后的消息:

Python 3.9.6 (default, Mar 10 2023, 20:16:38) 
[Clang 14.0.3 (clang-1403.0.22.14.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import openai
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/yule/Library/Python/3.9/lib/python/site-packages/openai/__init__.py", line 19, in <module>
    from openai.api_resources import (
  File "/Users/mic/Library/Python/3.9/lib/python/site-packages/openai/api_resources/__init__.py", line 1, in <module>
    from openai.api_resources.audio import Audio  # noqa: F401
  File "/Users/mic/Library/Python/3.9/lib/python/site-packages/openai/api_resources/audio.py", line 4, in <module>
    from openai import api_requestor, util
  File "/Users/mic/Library/Python/3.9/lib/python/site-packages/openai/api_requestor.py", line 22, in <module>
    import requests
  File "/Users/mic/Library/Python/3.9/lib/python/site-packages/requests/__init__.py", line 43, in <module>
    import urllib3
  File "/Users/mic/Library/Python/3.9/lib/python/site-packages/urllib3/__init__.py", line 38, in <module>
    raise ImportError(
ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with LibreSSL 2.8.3. See: https://github.com/urllib3/urllib3/issues/2168

我尝试--upgradeurllib3但仍然不起作用,结果是:

pip3 install --upgrade urllib3
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: urllib3 in ./Library/Python/3.9/lib/python/site-packages (2.0.2)
prismwatermelon 提问于2023-05-06
6 个回答
#1楼 已采纳
得票数 74

错误信息提到OpenSSL 1.1.1+和LibreSSL 2.8.3的原因是urllib3 v2.0(你安装的版本)需要OpenSSL 1.1.1+才能正常工作,因为它依赖于OpenSSL 1.1.1的一些新特性。问题是你的环境中目前安装的'ssl'模块版本是用LibreSSL 2.8.3编译的,它与urllib3 v2.0不兼容。

要使用 urllib3 v2.0,您需要使用 OpenSSL 1.1.1 或更高版本编译的“ssl”模块,方法是:

brew install openssl@1.1

或者您可以使用兼容的旧版本 urllib3。例如urllib3 v1.26.6,它没有严格的OpenSSL版本要求。 您可以使用以下命令强制安装版本:

pip install urllib3==1.26.6 
Philippe Sisowath 提问于2023-05-06
不幸的是,安装 openssl@1.1 并没有为我解决问题。降级 urllib3 就可以完成任务,但这感觉有点尴尬。Kristian Heitkamp 2023-05-10
@KristianHeitkamp 你能告诉我们哪个版本解决了你的问题吗?Parvathirajan Natarajan 2023-05-15
抱歉,我太不具体了,我提到了上述解决方案中的第二个: pip install urllib3==1.26.6Kristian Heitkamp 2023-05-16
pip install urllib3==1.26.6 在我的案例中有效。我之前有 urlib3 2+ 版本,这是导致问题的原因。降级确实可以解决该错误。seahawk 2023-05-22
我认为仅安装 openssl 1.1 的问题是 python ssl 模块仍然不会针对它进行编译。因此,在安装 openssl 1.1 后,您必须针对 openssl 1.1 从源代码编译 python。rich 2023-05-31
#2楼
得票数 34

在 MacBook Air m1 上工作时遇到了同样的问题。 这对我有用

pip uninstall urllib3
pip install 'urllib3<2.0'
Tigran 提问于2023-05-26
Tigran 修改于2023-05-26
该解决方案适用于 M2Dewsworld 2023-06-04
@Dewsworld 是吗?我很久以前就试图让这项工作成功,但仍然遇到麻烦。有什么推荐吗?andres.gtz 2023-06-06
也适用于 RHEL7.9。谢谢mukesh.kumar 2023-06-08
也可以在我的ubuntu上工作冯剑龙 2023-06-28
#3楼
得票数 5

我也遇到了这个问题。我的旧版本是python 3.9。 “brew install openssl@1.1”对我不起作用。

你可以试试:

pipenv install --python 3.11

这解决了我的问题。

Irene 提问于2023-05-16
如果这是一个 lambda 函数怎么办?Sulav Dahal 2023-05-20
#4楼
得票数 0

您应该升级系统的 LibreSSL 版本。使用brew upgrade openssl@1.1

911 提问于2023-05-06
#5楼
得票数 0

我们遇到了这个问题,有两个问题:

  • urllib3 版本不兼容。 -> 我们删除了当前版本并尝试安装 urllib3==1.26.15

然后我们遇到了第二个问题,我们无法安装这个版本。我们发现 Mac Mini 使用“zsh”,这不允许我们完全安装这个版本的 urllib3。我们更改为“bash”进行安装,然后返回 zsh。 一切正常。

Hien Nguyen 提问于2023-06-01
#6楼
得票数 -1

Macports 版本 3.9 使用 openssl 编译并正常工作。安装 macports 并使用 python,在我的 m2 上工作

https://ports.macports.org/port/python39/

Aleksey Derevyankin 提问于2023-06-02