Python AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
Python AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
我的一个 Python 脚本失败了:
Traceback (most recent call last):
File "./inspect_sheet.py", line 21, in <module>
main()
File "./inspect_sheet.py", line 12, in main
workbook_name=workbook_name,
File "./google_sheets.py", line 56, in __init__
self.login()
File "./google_sheets.py", line 46, in login
self.client = gspread.authorize(credentials)
File "/usr/local/lib/python2.7/site-packages/gspread/client.py", line 335, in authorize
client.login()
File "/usr/local/lib/python2.7/site-packages/gspread/client.py", line 98, in login
self.auth.refresh(http)
File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 598, in refresh
self._refresh(http.request)
File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 769, in _refresh
self._do_refresh_request(http_request)
File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 795, in _do_refresh_request
body = self._generate_refresh_request_body()
File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 1425, in _generate_refresh_request_body
assertion = self._generate_assertion()
File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 1554, in _generate_assertion
private_key, self.private_key_password), payload)
File "/usr/local/lib/python2.7/site-packages/oauth2client/crypt.py", line 162, in from_string
from OpenSSL import crypto
File "/usr/local/lib/python2.7/site-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import rand, crypto, SSL
File "/usr/local/lib/python2.7/site-packages/OpenSSL/SSL.py", line 118, in <module>
SSL_ST_INIT = _lib.SSL_ST_INIT
AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
原来问题出在我安装的 pyOpenSSL pyOpenSSL-0.15.1 上。
我做到了:
pip uninstall pyopenssl
然后
pip install pyopenssl
...我的 Python 脚本再次运行!
我最近遇到了同样的问题,经过几个小时的调查,我发现这是由新的 cryptography 2.0 升级引起的。此升级将破坏许多使用 pyopenssl 的软件包(如 Sentry、Google Analytics 等)。只需将其降级到 1.9 即可解决问题。
使用"pip install -U"请谨慎,它会自动升级未在requirements.txt中列出的包。
更新您的 pyopenssl
模块:
$ sudo pip install -U pyopenssl
使用 pip 升级 pyopenssl
无效,因为 none 与 pip
相关的命令对我有效。将pyopenssl
升级为easy_install
,即可解决上述问题。
sudo python -m easy_install --upgrade pyOpenSSL
credit @delimiter (Answer)
我在 Ubuntu 16.04 上遇到了同样的问题,但有以下变化:当 virtualenv 被激活时(. venv/bin/activate
在 运行 celery workers 之前,我的 pysolr,请求等case) - 一切正常,但是当我使用完整路径和 python 路径从命令行 运行 celery 时 - 出现了问题(同样的问题 运行 来自 supervisord )。此外,如果重要的话,virtualenv 已捆绑在机器上的其他地方,具有相同的 Ubuntu 版本。
解决方案很简单:将 /full/path/to/venv/bin
添加到 PATH(按照此处的建议 https://serverfault.com/questions/331027/supervisord-how-to-append-to-path )解决了这个问题。
不幸的是,我还没有 pin-pointed 什么样的更新导致了这个,但希望这可以帮助别人。
我也看到了 AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
错误。
正在做
sudo pip install pyOpenSSL==16.2.0
帮我解决了。
在我的例子中,问题是软件包安装在 root 目录中,我正在执行脚本,该脚本要求 pyopenssl
我的 [=89] =] 用户 forvas。而且该用户不能使用安装在 root 中的库。
所以首先我必须删除带有 aptitude
或 apt-get
的包。
sudo aptitude purge python-openssl
因此,我不得不再次安装软件包,但要考虑到正在执行要求库的脚本的用户。根据 Linux 用户和 pip
的参数 --user
查看库的安装位置。
案例一
forvas@server:$ pip install pyopenssl
Could not install packages due to an EnvironmentError:
[Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/OpenSSL'
Consider using the --user
option or check the permissions.
案例二
forvas@server:$ sudo pip install pyopenssl
/usr/local/lib/python2.7/dist-packages/OpenSSL/*
/usr/local/lib/python2.7/dist-packages/pyOpenSSL-17.5.0.dist-info/*
案例三
forvas@server:$ sudo pip install --user pyopenssl
/home/forvas/.local/lib/python2.7/site-packages/OpenSSL/*
/home/forvas/.local/lib/python2.7/site-packages/pyOpenSSL-17.5.0.dist-info/*
案例4
root@server:$ pip install pyopenssl
/usr/local/lib/python2.7/dist-packages/OpenSSL/*
/usr/local/lib/python2.7/dist-packages/pyOpenSSL-17.5.0.dist-info/*
案例5
root@server:$ pip install --user pyopenssl
/root/.local/lib/python2.7/site-packages/OpenSSL/*
/root/.local/lib/python2.7/site-packages/pyOpenSSL-17.5.0.dist-info/*
结论
我的问题是库安装在案例 5.
的目录中
解决方案
正在卸载软件包。
当我使用 Linux 用户 forvas 执行脚本时,我能够使用选项 [=57] 正确地重新安装包=]2 或 4(其中库可供所有 Linux 用户使用)或更准确地说,选项 3(其中的库仅供 Linux 用户 forvas 使用)。
当我尝试通过 ssh 进入 VM 时,我在 Ubuntu 16.04 VM 的控制台上看到 similar python 堆栈转储。
SSL_ST_INIT = _lib.SSL_ST_INIT
AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
pip
报告未安装 pyopenssl
。
我不得不这样做:
sudo apt install --reinstall python-openssl
就我而言,卸载和升级时抛出相同的错误。我无法卸载或升级。
AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
以下对我有用。
# rm -rf /usr/lib/python2.7/site-packages/OpenSSL/
# rm -rf /usr/lib/python2.7/site-packages/pyOpenSSL-16.1.0.dist-info
# rm -rf /usr/lib/python2.7/site-packages/pyOpenSSL-18.0.0-py2.7.egg
# pip2.7 install pyopenssl
Collecting pyopenssl
Downloading
.
.
100% |████████████████████████████████| 61kB 5.8MB/s
Collecting cryptography>=2.2.1 (from pyopenssl)
.
.
Installing collected packages: cryptography, pyopenssl
Found existing installation: cryptography 1.7.2
Uninstalling cryptography-1.7.2:
Successfully uninstalled cryptography-1.7.2
Successfully installed cryptography-2.2.2 pyopenssl-18.0.0
警告:仅当升级(sudo pip install pyOpenSSL==16.2.0
)或卸载(pip uninstall pyopenssl
)没有帮助时才尝试此操作
尝试使用以下命令:
easy_install -U pip
easy_install -U pyOpenSSL
我的问题是由 /usr/lib/python2.7/dist-packages/
.
中的 Python openssl 版本引起的
dpkg -l | grep openssl
显示:
ii python-openssl 0.15.1-2build1 all Python 2 wrapper around the OpenSSL library
我使用 sudo apt-get remove python-openssl
删除了它。然后我运行下面安装pip的发行版
curl -o ./get-pip.py https://bootstrap.pypa.io/get-pip.py
sudo python2 ./get-pip.py
pip --version
现在显示:
pip 18.0 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
然后我能够执行我试图完成的必要的 pip 安装。
我有一个类似的错误:
from OpenSSL import rand, crypto, SSL
File "/usr/local/lib/python3.5/dist-packages/OpenSSL/SSL.py", line 112, in <module>
SSL_ST_INIT = _lib.SSL_ST_INIT
AttributeError: module 'lib' has no attribute 'SSL_ST_INIT'
和 none 的其他答案可以修复它,因为 pip 无法安装任何东西。相反,我首先从终端做的是:
sudo rm -r /usr/local/lib/python3.5/dist-packages/OpenSSL
然后用pip重新安装了pyopenssl:
sudo pip install pyopenssl
一切都是肉汁。
以防万一其他人找不到正确的咒语来完成这项工作,截至 2018 年 11 月,对我有用的是:
sudo rm -rf /usr/local/lib/python2.7/dist-packages/OpenSSL/
sudo apt install --reinstall python-openssl
祝你好运!
我刚刚在我的 Ubuntu 16.04 主机上遇到了这个问题。 python-openssl 和 python-crypotgraphy 的 apt repo 包之间似乎存在版本冲突,与有人使用 pip 手动安装到 /usr/local/python2.7/dist-packages.
一旦进入这种状态,系统标准pip也无法执行。我通过手动设置排除树的 /usr/local 部分的 PYTHONPATH 环境变量解决了鸡和蛋的问题:
$ export PYTHONPATH="/usr/lib/python2.7:/usr/lib/python2.7/plat-x86_64-linux-gnu:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages/gtk-2.0"
$ /usr/bin/pip uninstall cryptography
$ unset PYTHONPATH
我获取了上面的库目录列表以用于 python shell:
import sys
for p in sys.path:
print(p)
然后复制列出的所有内容,但 /usr/local 目录除外。您的系统在其路径中可能有不同的列表。相应调整。
我的 bash 历史记录中也散布着一些手动 apt-get install --reinstall python-openssl python-cryptography
命令,这些命令可能需要也可能不需要。
试试:
export PYTHONPATH="/usr/lib/python2.7:/usr/lib/python2.7/plat-x86_64-linux-gnu:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages/gtk-2.0"
sudo apt-get install --reinstall python-openssl
在这些其他解决方案对我不起作用之后,我的解决方案要简单得多。我通过 pip 尝试 install/uninstall 的任何操作都返回相同的错误和堆栈跟踪。
我最终尝试通过 pip3 更新 pip,它完美地工作:
pip3 install --upgrade pip
我重新开始使用 pip,一切正常。我确实注意到它在 运行 pip 命令时引用了 Python 3.6。
# pip install pyopenssl`enter code here`
Requirement already satisfied: pyopenssl in /usr/lib64/python3.6/site-packages (18.0.0)
<snipped>
Requirement already satisfied: pycparser in /usr/lib64/python3.6/site-packages (from cffi!=1.11.3,>=1.7->cryptography>=2.2.1->pyopenssl) (2.19)
我遇到了同样的问题,由于 pip 不再工作,我不得不手动完成他的工作:
wget https://files.pythonhosted.org/packages/40/d0/8efd61531f338a89b4efa48fcf1972d870d2b67a7aea9dcf70783c8464dc/pyOpenSSL-19.0.0.tar.gz
tar -xzvf pyOpenSSL-19.0.0.tar.gz
cd pyOpenSSL-19.0.0
sudo python setup.py install
在那之后一切都按预期进行。
我在通过 brew 安装 python 2 和 3 的 MacOS 上遇到了这个问题。事实证明,brew uninstall
ing python 和 python@2 不会删除为这些版本的 python 安装的任何库;即在:
/usr/local/lib/python3.7/site-packages/
和
/usr/local/lib/python2.7/site-packages/
里面有些东西不对,所以对我有用的是 delete/move brew python 2 和 3 的所有已安装库,然后重新开始(并确保只使用 virtualenvs 来自在这里):
brew uninstall --ignore-dependencies python@2
brew uninstall --ignore-dependencies python
sudo mv /usr/local/lib/python3.7 ~/python3.7libs-backup
sudo mv /usr/local/lib/python2.7 ~/python2.7libs-backup
brew install python
brew install python@2
这对我有用:
sudo apt remove python-openssl
这是一个较旧的 post,所以我的回答希望能在 2019 年底对某人有所帮助...我的问题与 Python 2 vs 3 有关。我正在使用 Python 3独占;没有更多的遗产 Python。但是我的 OS(例如,Ubuntu 16.04)仍然安装了 Python 2.7。因此,当 运行 全局 pip
默认情况下(例如,不在 virtualenv 中),我调用 Python 2 版本的 pip
.
对我来说,我使用以下方法解决了这个问题。
卸载docker-compose
:
sudo pip3 uninstall docker-compose
sudo pip uninstall docker-compose
为我的 Python 版本重新安装 docker-compose
:
sudo pip3 install docker-compose
我是 运行 运行 OSX 10.15.5 Catalina 并且正在使用 pyenv。
在这个页面上尝试了许多其他解决方案后,对我有用的是:
pyenv uninstall 3.6.8
pyenv install 3.6.8
我不得不承认我不确定为什么这能解决这个问题,因为我最近才安装这个版本的 Python。
我在新安装的 Raspberry Pi OS(以前的 Raspbian)Buster Lite 32 位上获得 AttributeError: module 'lib' has no attribute 'ERR_load_RAND_strings'
在 pip 安装了一些带有 pip 的软件包之后。其他答案的组合有效:
sudo rm -r /usr/local/lib/python3.9/dist-packages/OpenSSL
sudo pip uninstall --yes pyopenssl
sudo pip install pyopenssl
第一个命令实际上不会删除软件包安装,只是删除它的文件,但是 uninstall
没有它会引发相同的错误。
显然我们正在处理一个 Pi,所以最后一个将是:
sudo pip install pyopenssl --no-cache-dir
(我想我会重申其他问题,因为这个问题没有出现在搜索问题中(它通过 Google 通过 ESP32 论坛出现)所以我用更多关键字重复它圆周率)
我的一个 Python 脚本失败了:
Traceback (most recent call last):
File "./inspect_sheet.py", line 21, in <module>
main()
File "./inspect_sheet.py", line 12, in main
workbook_name=workbook_name,
File "./google_sheets.py", line 56, in __init__
self.login()
File "./google_sheets.py", line 46, in login
self.client = gspread.authorize(credentials)
File "/usr/local/lib/python2.7/site-packages/gspread/client.py", line 335, in authorize
client.login()
File "/usr/local/lib/python2.7/site-packages/gspread/client.py", line 98, in login
self.auth.refresh(http)
File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 598, in refresh
self._refresh(http.request)
File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 769, in _refresh
self._do_refresh_request(http_request)
File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 795, in _do_refresh_request
body = self._generate_refresh_request_body()
File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 1425, in _generate_refresh_request_body
assertion = self._generate_assertion()
File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 1554, in _generate_assertion
private_key, self.private_key_password), payload)
File "/usr/local/lib/python2.7/site-packages/oauth2client/crypt.py", line 162, in from_string
from OpenSSL import crypto
File "/usr/local/lib/python2.7/site-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import rand, crypto, SSL
File "/usr/local/lib/python2.7/site-packages/OpenSSL/SSL.py", line 118, in <module>
SSL_ST_INIT = _lib.SSL_ST_INIT
AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
原来问题出在我安装的 pyOpenSSL pyOpenSSL-0.15.1 上。
我做到了:
pip uninstall pyopenssl
然后
pip install pyopenssl
...我的 Python 脚本再次运行!
我最近遇到了同样的问题,经过几个小时的调查,我发现这是由新的 cryptography 2.0 升级引起的。此升级将破坏许多使用 pyopenssl 的软件包(如 Sentry、Google Analytics 等)。只需将其降级到 1.9 即可解决问题。
使用"pip install -U"请谨慎,它会自动升级未在requirements.txt中列出的包。
更新您的 pyopenssl
模块:
$ sudo pip install -U pyopenssl
使用 pip 升级 pyopenssl
无效,因为 none 与 pip
相关的命令对我有效。将pyopenssl
升级为easy_install
,即可解决上述问题。
sudo python -m easy_install --upgrade pyOpenSSL
credit @delimiter (Answer)
我在 Ubuntu 16.04 上遇到了同样的问题,但有以下变化:当 virtualenv 被激活时(. venv/bin/activate
在 运行 celery workers 之前,我的 pysolr,请求等case) - 一切正常,但是当我使用完整路径和 python 路径从命令行 运行 celery 时 - 出现了问题(同样的问题 运行 来自 supervisord )。此外,如果重要的话,virtualenv 已捆绑在机器上的其他地方,具有相同的 Ubuntu 版本。
解决方案很简单:将 /full/path/to/venv/bin
添加到 PATH(按照此处的建议 https://serverfault.com/questions/331027/supervisord-how-to-append-to-path )解决了这个问题。
不幸的是,我还没有 pin-pointed 什么样的更新导致了这个,但希望这可以帮助别人。
我也看到了 AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
错误。
正在做
sudo pip install pyOpenSSL==16.2.0
帮我解决了。
在我的例子中,问题是软件包安装在 root 目录中,我正在执行脚本,该脚本要求 pyopenssl
我的 [=89] =] 用户 forvas。而且该用户不能使用安装在 root 中的库。
所以首先我必须删除带有 aptitude
或 apt-get
的包。
sudo aptitude purge python-openssl
因此,我不得不再次安装软件包,但要考虑到正在执行要求库的脚本的用户。根据 Linux 用户和 pip
的参数 --user
查看库的安装位置。
案例一
forvas@server:$ pip install pyopenssl
Could not install packages due to an EnvironmentError:
[Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/OpenSSL'
Consider using the
--user
option or check the permissions.
案例二
forvas@server:$ sudo pip install pyopenssl
/usr/local/lib/python2.7/dist-packages/OpenSSL/*
/usr/local/lib/python2.7/dist-packages/pyOpenSSL-17.5.0.dist-info/*
案例三
forvas@server:$ sudo pip install --user pyopenssl
/home/forvas/.local/lib/python2.7/site-packages/OpenSSL/*
/home/forvas/.local/lib/python2.7/site-packages/pyOpenSSL-17.5.0.dist-info/*
案例4
root@server:$ pip install pyopenssl
/usr/local/lib/python2.7/dist-packages/OpenSSL/*
/usr/local/lib/python2.7/dist-packages/pyOpenSSL-17.5.0.dist-info/*
案例5
root@server:$ pip install --user pyopenssl
/root/.local/lib/python2.7/site-packages/OpenSSL/*
/root/.local/lib/python2.7/site-packages/pyOpenSSL-17.5.0.dist-info/*
结论
我的问题是库安装在案例 5.
的目录中解决方案
正在卸载软件包。
当我使用 Linux 用户 forvas 执行脚本时,我能够使用选项 [=57] 正确地重新安装包=]2 或 4(其中库可供所有 Linux 用户使用)或更准确地说,选项 3(其中的库仅供 Linux 用户 forvas 使用)。
当我尝试通过 ssh 进入 VM 时,我在 Ubuntu 16.04 VM 的控制台上看到 similar python 堆栈转储。
SSL_ST_INIT = _lib.SSL_ST_INIT
AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
pip
报告未安装 pyopenssl
。
我不得不这样做:
sudo apt install --reinstall python-openssl
就我而言,卸载和升级时抛出相同的错误。我无法卸载或升级。
AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
以下对我有用。
# rm -rf /usr/lib/python2.7/site-packages/OpenSSL/
# rm -rf /usr/lib/python2.7/site-packages/pyOpenSSL-16.1.0.dist-info
# rm -rf /usr/lib/python2.7/site-packages/pyOpenSSL-18.0.0-py2.7.egg
# pip2.7 install pyopenssl
Collecting pyopenssl
Downloading
.
.
100% |████████████████████████████████| 61kB 5.8MB/s
Collecting cryptography>=2.2.1 (from pyopenssl)
.
.
Installing collected packages: cryptography, pyopenssl
Found existing installation: cryptography 1.7.2
Uninstalling cryptography-1.7.2:
Successfully uninstalled cryptography-1.7.2
Successfully installed cryptography-2.2.2 pyopenssl-18.0.0
警告:仅当升级(sudo pip install pyOpenSSL==16.2.0
)或卸载(pip uninstall pyopenssl
)没有帮助时才尝试此操作
尝试使用以下命令:
easy_install -U pip
easy_install -U pyOpenSSL
我的问题是由 /usr/lib/python2.7/dist-packages/
.
dpkg -l | grep openssl
显示:
ii python-openssl 0.15.1-2build1 all Python 2 wrapper around the OpenSSL library
我使用 sudo apt-get remove python-openssl
删除了它。然后我运行下面安装pip的发行版
curl -o ./get-pip.py https://bootstrap.pypa.io/get-pip.py
sudo python2 ./get-pip.py
pip --version
现在显示:
pip 18.0 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
然后我能够执行我试图完成的必要的 pip 安装。
我有一个类似的错误:
from OpenSSL import rand, crypto, SSL
File "/usr/local/lib/python3.5/dist-packages/OpenSSL/SSL.py", line 112, in <module>
SSL_ST_INIT = _lib.SSL_ST_INIT
AttributeError: module 'lib' has no attribute 'SSL_ST_INIT'
和 none 的其他答案可以修复它,因为 pip 无法安装任何东西。相反,我首先从终端做的是:
sudo rm -r /usr/local/lib/python3.5/dist-packages/OpenSSL
然后用pip重新安装了pyopenssl:
sudo pip install pyopenssl
一切都是肉汁。
以防万一其他人找不到正确的咒语来完成这项工作,截至 2018 年 11 月,对我有用的是:
sudo rm -rf /usr/local/lib/python2.7/dist-packages/OpenSSL/
sudo apt install --reinstall python-openssl
祝你好运!
我刚刚在我的 Ubuntu 16.04 主机上遇到了这个问题。 python-openssl 和 python-crypotgraphy 的 apt repo 包之间似乎存在版本冲突,与有人使用 pip 手动安装到 /usr/local/python2.7/dist-packages.
一旦进入这种状态,系统标准pip也无法执行。我通过手动设置排除树的 /usr/local 部分的 PYTHONPATH 环境变量解决了鸡和蛋的问题:
$ export PYTHONPATH="/usr/lib/python2.7:/usr/lib/python2.7/plat-x86_64-linux-gnu:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages/gtk-2.0"
$ /usr/bin/pip uninstall cryptography
$ unset PYTHONPATH
我获取了上面的库目录列表以用于 python shell:
import sys
for p in sys.path:
print(p)
然后复制列出的所有内容,但 /usr/local 目录除外。您的系统在其路径中可能有不同的列表。相应调整。
我的 bash 历史记录中也散布着一些手动 apt-get install --reinstall python-openssl python-cryptography
命令,这些命令可能需要也可能不需要。
试试:
export PYTHONPATH="/usr/lib/python2.7:/usr/lib/python2.7/plat-x86_64-linux-gnu:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages/gtk-2.0"
sudo apt-get install --reinstall python-openssl
在这些其他解决方案对我不起作用之后,我的解决方案要简单得多。我通过 pip 尝试 install/uninstall 的任何操作都返回相同的错误和堆栈跟踪。
我最终尝试通过 pip3 更新 pip,它完美地工作:
pip3 install --upgrade pip
我重新开始使用 pip,一切正常。我确实注意到它在 运行 pip 命令时引用了 Python 3.6。
# pip install pyopenssl`enter code here`
Requirement already satisfied: pyopenssl in /usr/lib64/python3.6/site-packages (18.0.0)
<snipped>
Requirement already satisfied: pycparser in /usr/lib64/python3.6/site-packages (from cffi!=1.11.3,>=1.7->cryptography>=2.2.1->pyopenssl) (2.19)
我遇到了同样的问题,由于 pip 不再工作,我不得不手动完成他的工作:
wget https://files.pythonhosted.org/packages/40/d0/8efd61531f338a89b4efa48fcf1972d870d2b67a7aea9dcf70783c8464dc/pyOpenSSL-19.0.0.tar.gz
tar -xzvf pyOpenSSL-19.0.0.tar.gz
cd pyOpenSSL-19.0.0
sudo python setup.py install
在那之后一切都按预期进行。
我在通过 brew 安装 python 2 和 3 的 MacOS 上遇到了这个问题。事实证明,brew uninstall
ing python 和 python@2 不会删除为这些版本的 python 安装的任何库;即在:
/usr/local/lib/python3.7/site-packages/
和
/usr/local/lib/python2.7/site-packages/
里面有些东西不对,所以对我有用的是 delete/move brew python 2 和 3 的所有已安装库,然后重新开始(并确保只使用 virtualenvs 来自在这里):
brew uninstall --ignore-dependencies python@2
brew uninstall --ignore-dependencies python
sudo mv /usr/local/lib/python3.7 ~/python3.7libs-backup
sudo mv /usr/local/lib/python2.7 ~/python2.7libs-backup
brew install python
brew install python@2
这对我有用:
sudo apt remove python-openssl
这是一个较旧的 post,所以我的回答希望能在 2019 年底对某人有所帮助...我的问题与 Python 2 vs 3 有关。我正在使用 Python 3独占;没有更多的遗产 Python。但是我的 OS(例如,Ubuntu 16.04)仍然安装了 Python 2.7。因此,当 运行 全局 pip
默认情况下(例如,不在 virtualenv 中),我调用 Python 2 版本的 pip
.
对我来说,我使用以下方法解决了这个问题。
卸载docker-compose
:
sudo pip3 uninstall docker-compose
sudo pip uninstall docker-compose
为我的 Python 版本重新安装 docker-compose
:
sudo pip3 install docker-compose
我是 运行 运行 OSX 10.15.5 Catalina 并且正在使用 pyenv。
在这个页面上尝试了许多其他解决方案后,对我有用的是:
pyenv uninstall 3.6.8
pyenv install 3.6.8
我不得不承认我不确定为什么这能解决这个问题,因为我最近才安装这个版本的 Python。
我在新安装的 Raspberry Pi OS(以前的 Raspbian)Buster Lite 32 位上获得 AttributeError: module 'lib' has no attribute 'ERR_load_RAND_strings'
在 pip 安装了一些带有 pip 的软件包之后。其他答案的组合有效:
sudo rm -r /usr/local/lib/python3.9/dist-packages/OpenSSL
sudo pip uninstall --yes pyopenssl
sudo pip install pyopenssl
第一个命令实际上不会删除软件包安装,只是删除它的文件,但是 uninstall
没有它会引发相同的错误。
显然我们正在处理一个 Pi,所以最后一个将是:
sudo pip install pyopenssl --no-cache-dir
(我想我会重申其他问题,因为这个问题没有出现在搜索问题中(它通过 Google 通过 ESP32 论坛出现)所以我用更多关键字重复它圆周率)