【问题标题】:Why am I still getting the error: "CryptoUnavailableError: No crypto library available" in Python?为什么我仍然收到错误:Python 中的“CryptoUnavailableError:没有可用的加密库”?
【发布时间】:2015-07-23 22:36:58
【问题描述】:

我正在尝试通过 Python 对 Google 的 DFA 进行 API 调用,并且正在使用他们建议的代码。但是,它仍然没有说凭据对象已定义并引发错误:

Traceback (most recent call last):
  File "<input>", line 2, in <module>
  File "C:\Python27\lib\site-packages\oauth2client\util.py", line 137, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "C:\Python27\lib\site-packages\oauth2client\client.py", line 1502, in __init__
    _RequireCryptoOrDie()
  File "C:\Python27\lib\site-packages\oauth2client\client.py", line 1456, in _RequireCryptoOrDie
    raise CryptoUnavailableError('No crypto library available')
CryptoUnavailableError: No crypto library available

我已经安装了 pyOpenSSL 库和带有 VCForPython 编译器的 pycrypto 库。我还设法在 LiClipse 客户端中编辑了所有 3 个 app.yaml 文件以追加:

libraries:
- name: pycrypto
  version: "latest"

到它上面。

这是我的代码到目前为止的样子,带有任意凭据:

import json    
import sys    
import apiclient    
from oauth2client import crypt    
import ssl    
import urllib2    
from OpenSSL import crypto    


HAS_OPENSSL = False    
HAS_CRYPTO = False    
try:    
  from oauth2client import crypt    
  HAS_CRYPTO = True    
  if crypt.OpenSSLVerifier is not None:    
    HAS_OPENSSL = True    
except ImportError:    
  pass


from oauth2client.client import SignedJwtAssertionCredentials    

client_email = 'example.apps.googleusercontent.com'    

with open("C:\My Project-1234.p12") as f:    
        private_key = f.read()     


credentials = SignedJwtAssertionCredentials(client_email, private_key,
    'https://www.googleapis.com/auth/dfareporting')    

from httplib2 import Http

我意识到一开始可能有些多余。我一直无法通过这一步。

我觉得我已经尝试了所有方法,但仍然遇到“无加密库”错误。

有人可以帮忙吗?谢谢!

PS - 我使用的是 Windows 7 和 Python 2.7 以及 LiClipse。

【问题讨论】:

  • 您确认可以从脚本中导入 pyopenssl 或 pycrypto 吗?尝试在 oauth2client 之前导入那些来验证。
  • pyopenssl 似乎导入了。尽管下载了编译器和 windows sdk,但我仍然无法安装 pycrypto。我现在的代码一直运行到这里的最后一行:“service = build('dfareporting', 'v2.1', http=http_auth)” 我实际上是在尝试调用。我现在收到错误:OpenSSL.crypto.Error: []。所以,看起来仍然与加密货币有关。
  • 我在 Windows 10(从 Win 7 升级)、Visual Studio 的 Python 工具、Visual Studio 2013 和 Python 3.4 虚拟环境中也遇到了这个问题。最奇怪的是:它与 Eclipse 项目中的 venv 一起工作。我手动比较了两个 venv 中的站点包,但看不出有任何区别。我的 Python 技能不足以弄清楚为什么它在一个 venv 而不是另一个 venv 中工作

标签: python python-2.7 google-api pycrypto pyopenssl


【解决方案1】:

上述方法是将 API 调用作为“服务”Google 帐户进行。我作为一个“已安装的应用程序”帐户重试了一个新的凭据和一种不同的方式来进行不需要任何加密类型库的 API 调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多