from apiclient import discovery ImportError: No module named apiclient

491 views Asked by At

I am running apprtc source code I found on github in windows 10. But I have this error when I look at the Cmd console. It seems like a apiclient is missing. I installed it using pip install but I steel get the same error. I also tried pip install --upgrade google-api-python-client but I still get the same error.

Traceback (most recent call last):
  File "C:\Users\Gilbert\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "C:\Users\Gilbert\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py", line 311, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "C:\Users\Gilbert\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "C:\Users\Gilbert\Documents\Projets\APPRTC\apprtc-master\src\app_engine\apprtc.py", line 23, in <module>
    import analytics
  File "C:\Users\Gilbert\Documents\Projets\APPRTC\apprtc-master\src\app_engine\analytics.py", line 14, in <module>
    import apiauth
  File "C:\Users\Gilbert\Documents\Projets\APPRTC\apprtc-master\src\app_engine\apiauth.py", line 12, in <module>
    from apiclient import discovery
ImportError: No module named apiclient
INFO     2020-07-11 00:59:21,395 module.py:865] default: "GET / HTTP/1.1" 500 -
ERROR    2020-07-10 23:59:21,443 wsgi.py:269]
Traceback (most recent call last):
  File "C:\Users\Gilbert\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "C:\Users\Gilbert\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py", line 311, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "C:\Users\Gilbert\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "C:\Users\Gilbert\Documents\Projets\APPRTC\apprtc-master\src\app_engine\apprtc.py", line 23, in <module>
    import analytics
  File "C:\Users\Gilbert\Documents\Projets\APPRTC\apprtc-master\src\app_engine\analytics.py", line 14, in <module>
INFO     2020-07-11 00:59:21,443 module.py:865] default: "GET /favicon.ico HTTP/1.1" 500 -
    import apiauth
  File "C:\Users\Gilbert\Documents\Projets\APPRTC\apprtc-master\src\app_engine\apiauth.py", line 12, in <module>
    from apiclient import discovery
ImportError: No module named apiclient
1

There are 1 answers

0
Jan Hernandez On

I think your sample code is outdated, the correct way to import the discovery service by using the Google Api client in App Engine is like this code snippet.

from googleapiclient import discovery
from oauth2client.client import GoogleCredentials

# this will take the credentials that was defined by the command 'gcloud auth application-default login' on local environments, this is already defined on App Engine STD/Flex(no custom runtime) and Cloud functions.

credentials = GoogleCredentials.get_application_default()


# if you are using Cloud functions or App Engine (GAE) STD environment set
# cache_discovery=False, to avoid try to save cache on disk
# if this is not set, the application works fine but will thrown some warnings

service = discovery.build('cloudresourcemanager', 'v1', credentials=credentials, cache_discovery=False)

# this example is to use cloud resource manager, but you can change this for the service that you need
#disable warnings to avoid noise in the logs, this applies for GAE STD & Cloud functions

logging.getLogger('googleapiclient.discovery_cache').setLevel(logging.ERROR)


requirements.txt

google-api-python-client==1.9.3
oauth2client==4.1.3

In this Google's repo you can find updated examples