Repository navigation
Fail to import ServiceAccountCredentials within GAE endpoint tool #1705
Copy link
Copy link
Closed
Labels
authtype: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.Error or flaw in code with unintended results or allowing sub-optimal usage patterns.
Description
I am generating some GAE endpoints library. When running endpoints tool(endpointscfg.py get_client_lib ... ), gcloud import fails.
Third party libraries are bundled with GAE project, and oauth2client-2.0.1 is actually exists in library directory.
Affecting versions: 0.10 and above
Traceback (most recent call last):
File "/usr/local/bin/endpointscfg.py", line 133, in <module>
run_file(__file__, globals())
File "/usr/local/bin/endpointscfg.py", line 129, in run_file
execfile(_PATHS.script_file(script_name), globals_)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/endpointscfg.py", line 561, in <module>
main(sys.argv)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/endpointscfg.py", line 557, in main
args.callback(args)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/endpointscfg.py", line 426, in _GetClientLibCallback
hostname=args.hostname, application_path=args.application)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/endpointscfg.py", line 388, in _GetClientLib
application_path=application_path)
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/endpointscfg.py", line 187, in GenApiConfig
module = __import__(module_name, fromlist=base_service_class_name)
File "/Users/kang/jackend/main.py", line 10, in <module>
from auth.services import JackEndAuthAPI
File "/Users/kang/jackend/auth/services.py", line 12, in <module>
from . import (
File "/Users/kang/jackend/auth/storage.py", line 9, in <module>
from ext import cloudstorage as storage
File "/Users/kang/jackend/ext/cloudstorage.py", line 9, in <module>
from gcloud import (
File "/Users/kang/jackend/lib/gcloud/storage/__init__.py", line 45, in <module>
from gcloud.storage.client import Client
File "/Users/kang/jackend/lib/gcloud/storage/client.py", line 19, in <module>
from gcloud.client import JSONClient
File "/Users/kang/jackend/lib/gcloud/client.py", line 17, in <module>
from oauth2client.service_account import ServiceAccountCredentials
ImportError: cannot import name ServiceAccountCredentials
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
authtype: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.Error or flaw in code with unintended results or allowing sub-optimal usage patterns.
Activity
[-]Fails to import ServiceAccountCredentials in GAE endpoint tool[/-][+]Fail to import ServiceAccountCredentials in GAE endpoint tool[/+][-]Fail to import ServiceAccountCredentials in GAE endpoint tool[/-][+]Fail to import ServiceAccountCredentials within GAE endpoint tool[/+]jgeewax commentedon Apr 8, 2016
I'm guessing that maybe App Engine provides a different version of oauth2client somehow?
Can you add a line in your code that does:
It should show
'2.0.1'if you're using the one in the library directory. (the variable is defined here: https://github.com/google/oauth2client/blob/master/oauth2client/__init__.py)jgeewax commentedon Apr 8, 2016
OK -- if you have oauthclient 2.0.1 in your directory, then all you'd need to do is put it first in the
PYTHONPATHenvironment variable and then it'll use that one.jgeewax commentedon Apr 8, 2016
I actually don't know for sure, but all you need is to make sure the oauth2client that you have (which is the right version) is the one used by your code... I'd assume you'd need to
vendor.add('path/to/oauth2client')dhermes commentedon Apr 8, 2016
@jonparrott is the author of
vendorhe can chime in?theacodes commentedon Apr 8, 2016
The problem is that
endpointscfg.pydoesn't loadappengine_config.py. I'm actually the one who reported this issue.A workaround is to just
import appengine_configyourself as soon as possible in your code.dhermes commentedon Apr 8, 2016
@cyluss LMK if this doesn't work for you and we can re-open and discuss.
3 remaining items
theacodes commentedon Apr 11, 2016
Can you print
sys.pathafter importingappengine_configandoauth2client.__version__?theacodes commentedon Apr 13, 2016
@cyluss sorry for the delay, can you tell me what
oauth2client.__version__andoauth2client.__file__is afterimport appengine_config?theacodes commentedon Apr 13, 2016
Can you try doing this nonsense in
appengine_config.pyafter the vendor call?theacodes commentedon Apr 14, 2016
Great.
The long and short is that app engine is barrels of fun when it comes to user-provided newer versions of bundled libraries.
chore(main): release 2.39.0 (#1705)
chore: upgrade mypy (#1705)
feat(samples): add samples for appendable objects writes and reads (#…
chore: librarian release pull request: 20260202T123858Z (#1736)
feat: support to_strip parameter for str.strip, str.lstrip and str.rs…
docs: migrate code from googleapis/python-bigquery (#18303)