为什么我仍然得到错误:Python中的“CryptoUnavailableError:没有可用的加密库”?

时间:2015-07-23 22:36:58

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

我正在尝试通过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

我意识到一开始可能有些过剩。我无法超越这一步。

我觉得我已经尝试了所有的东西,但仍然被抛出了'no crypto library'错误。

有人可以帮忙吗?谢谢!

PS - 我正在使用Windows 7和Python 2.7以及LiClipse。

1 个答案:

答案 0 :(得分:0)

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