2

I'm receiving the following error when executing the dev_appserver.py:

from google.auth import app_engine
File "/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/    python/runtime/sandbox.py"
, line 1147, in load_module
    raise ImportError('No module named %s' % fullname)
ImportError: No module named google.auth

Odd thing is when I deploy the app, it works fine.

I tried:

  1. dev_appserver.py MY_DIRECTORY
  2. cd /google/google-cloud-sdk/bin/; python dev_appserver.py MY_DIRECTORY
  3. python dev_appserver.py hello_world/
  4. Installed updated gcloud components install app-engine-go

Additional info:

  1. No virtual env is being used.
  2. path to dev_appserver: /google/google-cloud-sdk/bin/dev_appserver.py
  3. I'm using Google's Console Cloudshell
  4. Here are the SDK versions:

    • Google Cloud SDK 192.0.0
    • alpha 2017.09.15
    • app-engine-go
    • app-engine-java 1.9.63
    • app-engine-php " "
    • app-engine-python 1.9.67
    • app-engine-python-extras 1.9.63
    • beta 2017.09.15
    • bq 2.0.29
    • cbt
    • cloud-datastore-emulator 1.4.1
    • core 2018.03.02
    • datalab 20180213
    • docker-credential-gcr
    • gcd-emulator v1beta3-1.0.0
    • gsutil 4.28
    • kubectl
    • pubsub-emulator 2018.02.02

Files:

app.yaml

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /.*
  script: main.app

libraries:
- name: flask
  version: 0.12
- name: six
  version: "1.9.0" 

appengine_config.py

from google.appengine.ext import vendor
import os

vendor.add(os.path.join(os.path.dirname(os.path.realpath(__file__)),'lib'))

main.py

import logging

from flask import Flask
from sheets import data

app = Flask(__name__)


@app.route('/')
def hello():
    return 'Hello World!{}'.format(data)


@app.errorhandler(500)
def server_error(e):
    # Log the error and stacktrace.
    logging.exception('An error occurred during a request.')
    return 'An internal error occurred.', 500

sheets.py

from google.auth import app_engine
import googleapiclient.discovery

SCOPES = ['https://www.googleapis.com/auth/drive',
          'https://www.googleapis.com/auth/drive.file',
          'https://www.googleapis.com/auth/drive.readonly',
          'https://www.googleapis.com/auth/spreadsheets.readonly',
          'https://www.googleapis.com/auth/sqlservice.admin']

spreadsheetId = '<spreadsheet-id>'
rangeName = 'A1:A5'

credentials = app_engine.Credentials(scopes=SCOPES)
service = googleapiclient.discovery.build('sheets', 'v4', credentials=credentials)

data = service.spreadsheets().values().get(spreadsheetId=spreadsheetId,     
range=rangeName).execute()
data = data.get('values',[])

/lib

.
..
apiclient
cachetools
cachetools-2.0.1.dist-info
google
googleapiclient
google_api_python_client-1.5.2.dist-info
google_api_python_client-1.6.5.dist-info
google_auth-1.4.1.dist-info
google_auth-1.4.1-py3.6-nspkg.pth
google_auth_httplib2-0.0.3.dist-info
google_auth_httplib2.py
google_auth_httplib2.pyc
httplib2
httplib2-0.10.3.dist-info
oauth2client
oauth2client-2.2.0.dist-info
oauth2client-4.1.2.dist-info
pyasn1
pyasn1-0.4.2.dist-info
pyasn1_modules
pyasn1_modules-0.2.1.dist-info
rsa
rsa-3.4.2.dist-info
simplejson
simplejson-3.13.2.dist-info
six-1.11.0.dist-info
six.py
six.pyc
uritemplate
uritemplate-0.6.dist-info
uritemplate-3.0.0.dist-info

I solve the issue:

The dev_appserver.py was not using the modules in my lib folder. Instead it was using the packages on my computer. To eliminate the issue, I removed all Google packages from my local machine and it works great now.

6
  • What libraries did you vendor in your app's lib dir? Commented Mar 9, 2018 at 14:24
  • Just added my lib folder. Commented Mar 9, 2018 at 14:52
  • Hm, you appear to indeed have google-auth installed. Do you see the google/auth/__init__.py and google/auth/app_engine.py files under lib? Commented Mar 9, 2018 at 15:01
  • Wait, I see a google_auth-1.4.1-py3.6... file in lib - is that a python3 version of the library by any chance? You need a python 2.7 one... Commented Mar 9, 2018 at 15:03
  • Thanks @DanCornilescu. Yep, google/auth/__init__.py exists. How would I uninstall google_auth-1.4.1-py3.6..' from the /lib folder and install the python 2.7 version. To be clear, I'm using python 2.7. Commented Mar 9, 2018 at 15:18

2 Answers 2

3

https://github.com/GoogleCloudPlatform/google-auth-library-python/issues/169#issuecomment-315417916

I solved this issue by above comment:

Yes, I have the following in appengine_config.py:

from google.appengine.ext import vendor

vendor.add('lib')

I managed to resolve the module loading issue by using the following instead:

appengine_config.py

import os
import google
from google.appengine.ext import vendor

lib_directory = os.path.dirname(__file__) + '/lib'

# Change where to find the google package (point to the lib/ directory)
google.__path__ = [os.path.join(lib_directory, 'google')] + google.__path__

# Add any libraries install in the "lib" folder.
vendor.add(lib_directory)
Sign up to request clarification or add additional context in comments.

2 Comments

Thanks @Axa Cheng. I implemented but ran into the next error: Ena ble it by visiting https://console.developers.google.com/apis/api/sheets.googleapis.com/overview?project=cloud-devshell-dev then re try. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry."> The API is enabled and the patch also gives me the following error when deploying the app: ` from pyasn1.codec.der import decoder ImportError: No module named pyasn1.codec.der`. The Sheets API has been enabled for three days.
I could solve this problem by doing what Kamran said in here.
0

I had very likely problem in from google.auth.crypt import base and I solved it, so you can try this.

Go to the file that has the import problem, and change manually the:

from google.auth import app_engine

To the:

import app_engine

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.