I am using gspread to connect my application to spreadsheet and for that I am using the following code
import json
import gspread
from oauth2client.client import SignedJwtAssertionCredentials
json_key = json.load(open('service_account.json'))
scope = ['https://spreadsheets.google.com/feeds']
credentials = SignedJwtAssertionCredentials(json_key['client_email'], json_key['private_key'], scope)
gc = gspread.authorize(credentials)
sheet = gc.open('Order Database').sheet1
This same code worked fine when I used it in idle to get access to the spreadsheet.But when I used it in the code for my application, for which I am using Google App Engine, when I run the app and try to get access to the page I get this error
ERROR 2015-09-14 08:49:44,263 wsgi.py:263]
Traceback (most recent call last):
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
handler, path, err = LoadObject(self._handler)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject
obj = __import__(path[0])
File "/Users/mbp13inch/Documents/Workspace/ehscanteen/main.py", line 15, in <module>
db = Database()
File "/Users/mbp13inch/Documents/Workspace/ehscanteen/server.py", line 10, in __init__
credentials = SignedJwtAssertionCredentials(json_key['client_email'], json_key['private_key'], scope)
File "/Users/mbp13inch/Documents/Workspace/ehscanteen/lib/oauth2client/util.py", line 142, in positional_wrapper
return wrapped(*args, **kwargs)
File "/Users/mbp13inch/Documents/Workspace/ehscanteen/lib/oauth2client/client.py", line 1622, in __init__
_RequireCryptoOrDie()
File "/Users/mbp13inch/Documents/Workspace/ehscanteen/lib/oauth2client/client.py", line 1573, in _RequireCryptoOrDie
raise CryptoUnavailableError('No crypto library available')
CryptoUnavailableError: No crypto library available
I even installed the libraries in the project directory successfully:
pip install -t lib PyOpenSSL
pip install -t lib gspread
pip install -t lib oauth2client
pip install -t lib cryptography
I even tried adding --upgrade
to each of it and all of it installed successfully but got the same error
Please tell me if I am doing anything wrong and how can I solve this problem?
Thanks in advance.
Ok, I finally solved the problem. All I actually had to was to add the following to app.yaml
:
libraries:
- name: pycrypto
version: "latest"