ImportError:urllib3 v2.0 仅支持 OpenSSL 1.1.1+,当前 'ssl' 模块是使用 LibreSSL 2.8.3 编译的

pri*_*lon 125 python urllib3 openai-api

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

urllib3 的“ssl”模块是使用 LibreSSL 而不是 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
Run Code Online (Sandbox Code Playgroud)

我尝试了--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)
Run Code Online (Sandbox Code Playgroud)

小智 198

错误消息中提到 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
Run Code Online (Sandbox Code Playgroud)

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

pip install urllib3==1.26.6
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,安装 openssl@1.1 并没有为我解决问题。降级 urllib3 就可以完成任务,但这感觉有点尴尬。 (36认同)
  • `pip install urllib3==1.26.6` 在我的例子中有效。我之前有 urlib3 2+ 版本,这是导致问题的原因。降级确实可以解决该错误。 (11认同)
  • 我认为仅安装 openssl 1.1 的问题是 python ssl 模块仍然不会针对它进行编译。因此,在安装 openssl 1.1 后,您必须针对 openssl 1.1 从源代码编译 python。 (2认同)

小智 126

我在使用MacBook Air (M1)时遇到了同样的问题。这对我有用

pip uninstall urllib3
pip install 'urllib3<2.0'
Run Code Online (Sandbox Code Playgroud)

  • 该解决方案适用于 M2 (5认同)

小智 10

对我来说,以下内容在 PyCharm 中有效:

  1. 右下角:点击Python 3。 *
  2. 口译员设置
  3. 双击左侧版本的urllib3
  4. 检查指定版本
  5. 最后选择1.26.16安装包


小智 9

您可以尝试安装与当前安装的 OpenSSL 版本兼容的旧版本 urllib3。为此,您可以使用 pip 安装特定版本:

sudo python3.8 -m pip install urllib3==1.26.6
Run Code Online (Sandbox Code Playgroud)

  • `pip install urllib3==1.26.6` 就足够了。 (6认同)

小智 8

我也遇到了这个问题。我的旧版本是 Python\xc2\xa03.9。\n“brew install openssl@1.1”对我不起作用。

\n

你可以试试:

\n

pipenv install --python 3.11

\n

这解决了我的问题。

\n