Symptom
Nowadays pip install --upgrade google-api-python-client PyOpenSSL will cause our script to fail like this:
Traceback (most recent call last):
File "./import-mailbox-to-gmail.py", line 36, in <module>
from oauth2client.service_account import ServiceAccountCredentials
ImportError: No module named oauth2client.service_account
Cause
The google-api-client no longer requires/installs oauth2client package.
Workaround
pip install --upgrade google-api-python-client PyOpenSSL oauth2client
Discussion
https://google-auth.readthedocs.io/en/latest/oauth2client-deprecation.html
It looks like oauth2client.service_account.ServiceAccountCredentials.from_json_keyfile_name() has moved to google.oauth2.service_account.Credentials.from_service_account_file() but the new Credentials class doesn't define an authorize() function. It appears we'll need to use google_auth_httplib2.AuthorizedHttp(credentials) instead. But I'm not sure.
Additionally, I can't find any replacement for oauth2client.tools.argparser so I guess a workaround would be to disable the inheritance of the --auth* --noauth* args? Yuk!
Symptom
Nowadays
pip install --upgrade google-api-python-client PyOpenSSLwill cause our script to fail like this:Cause
The google-api-client no longer requires/installs oauth2client package.
Workaround
pip install --upgrade google-api-python-client PyOpenSSL oauth2clientDiscussion
https://google-auth.readthedocs.io/en/latest/oauth2client-deprecation.html
It looks like
oauth2client.service_account.ServiceAccountCredentials.from_json_keyfile_name()has moved togoogle.oauth2.service_account.Credentials.from_service_account_file()but the newCredentialsclass doesn't define anauthorize()function. It appears we'll need to usegoogle_auth_httplib2.AuthorizedHttp(credentials)instead. But I'm not sure.Additionally, I can't find any replacement for
oauth2client.tools.argparserso I guess a workaround would be to disable the inheritance of the--auth*--noauth*args? Yuk!