Ben*_*ler 72 python openssl pyopenssl
我的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'
Run Code Online (Sandbox Code Playgroud)
Muh*_*san 132
pyopenssl
使用pip进行升级并不起作用,因为与之相关的命令都没有pip
为我工作.通过升级pyopenssl
使用easy_install
,上述问题就可以迎刃而解.
sudo python -m easy_install --upgrade pyOpenSSL
Run Code Online (Sandbox Code Playgroud)
信用@delimiter(答案)
Ben*_*ler 75
原来问题在于我安装了pyOpenSSL,pyOpenSSL-0.15.1.
我做了:
pip uninstall pyopenssl
Run Code Online (Sandbox Code Playgroud)
然后
pip install pyopenssl
Run Code Online (Sandbox Code Playgroud)
...我的Python脚本再次运行!
use*_*292 15
更新您的pyopenssl
模块:
$ sudo pip install -U pyopenssl
Run Code Online (Sandbox Code Playgroud)
wor*_*ise 12
我有一个类似的错误:
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'
Run Code Online (Sandbox Code Playgroud)
并没有其他答案可以解决它,因为pip无法安装任何东西.相反,我首先从终端做了这件事:
sudo rm -r /usr/local/lib/python3.5/dist-packages/OpenSSL
Run Code Online (Sandbox Code Playgroud)
然后用pip重新安装pyopenssl:
sudo pip install pyopenssl
Run Code Online (Sandbox Code Playgroud)
一切都很好吃.
小智 9
我最近遇到了同样的问题,经过几个小时的调查,我发现它是由新的加密2.0升级引起的.此升级将使用pyopenssl(如Sentry,Google Analytics等)打破许多软件包.只需将其降级为1.9即可解决问题.
如果您使用"pip install -U",请务必小心,它会自动升级requirements.txt中未列出的软件包.
就我而言,问题在于该软件包已安装在根目录中,并且我正在执行pyopenssl
Linux用户forvas要求的脚本。该用户不能使用安装在root用户中的库。
因此,首先我必须使用aptitude
或删除软件包apt-get
。
sudo aptitude purge python-openssl
Run Code Online (Sandbox Code Playgroud)
因此,我不得不再次安装该软件包,但要考虑执行脚本的用户,该脚本正在请求该库。看看到库随Linux用户和参数安装位置--user
的pip
。
情况1
forvas@server:$ pip install pyopenssl
Run Code Online (Sandbox Code Playgroud)
由于EnvironmentError无法安装软件包:
[Errno 13]权限被拒绝:“ / usr / local / lib / python2.7 / dist-packages / OpenSSL”
考虑使用该
--user
选项或检查权限。
情况二
forvas@server:$ sudo pip install pyopenssl
Run Code Online (Sandbox Code Playgroud)
/usr/local/lib/python2.7/dist-packages/OpenSSL/*
/usr/local/lib/python2.7/dist-packages/pyOpenSSL-17.5.0.dist-info/*
情况3
forvas@server:$ sudo pip install --user pyopenssl
Run Code Online (Sandbox Code Playgroud)
/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
Run Code Online (Sandbox Code Playgroud)
/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
Run Code Online (Sandbox Code Playgroud)
/root/.local/lib/python2.7/site-packages/OpenSSL/*
/root/.local/lib/python2.7/site-packages/pyOpenSSL-17.5.0.dist-info/*
结论
我的问题是该库安装在案例5的目录中。
解
卸载程序包。
当我使用Linux用户forvas执行脚本时,我能够正确地使用选项2或4(其中所有的Linux用户都可以使用该库)重新安装该软件包,或者更准确地说,使用选项3(其中该库为仅适用于Linux用户forvas)。
小智 5
我遇到了同样的问题,由于 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
Run Code Online (Sandbox Code Playgroud)
之后,一切都按预期进行。
归档时间: |
|
查看次数: |
72658 次 |
最近记录: |