如何解决导入错误:无法在Python 3上导入名称“ssl”

7kjnsjlb  于 2023-02-14  发布在  Python
关注(0)|答案(2)|浏览(367)

我在MAC操作系统 Catalina V10.15.5上使用pyenv和Python 3.6.0。我已经用brew将openssl更新到了最新版本(openssl@1.1):

brew install openssl

但是现在我在Python虚拟环境中遇到了以下错误,例如在使用Boto3时:

from urllib3.util.ssl_ import ( ImportError: cannot import name 'ssl'

如何将pyenv环境链接回SSL?

mdfafbf1

mdfafbf11#

我最近也遇到了同样的问题。解决方案是强制重新安装您在虚拟环境中使用的Python版本。
例如,对于Python 3.6.0:

pyenv install -f 3.6.0

输出:

python-build: use openssl from homebrew
python-build: use readline from homebrew
Installing Python-3.6.0...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
Installed Python-3.6.0 to /Users/andrew/.pyenv/versions/3.6.0

如输出中所示:* *"Python构造:use openssl from homebrew "**它会将Python链接到Homebrew定义的当前openssl版本。

lx0bsm1f

lx0bsm1f2#

# ImportError: cannot import name 'SSLv3_METHOD' from 'OpenSSL.SSL'
pip3 install pyopenssl==22.0.0

# AttributeError: module 'lib' has no attribute 'OpenSSL_add_all_algorithms'
pip3 install cryptography==38.0.4

您需要设置一个特殊版本的pyopenssl,SSLv2SSLv3是不再支持22.1.0. changelog here

相关问题