Как исправить «ImportError: невозможно импортировать базу имен» при развертывании в стандартной среде ядра приложения? - PullRequest
1 голос
/ 07 мая 2019

Я создал простое приложение Google App Engine, которое работает с API Google Docs.

для него требуется модуль app_engine из google.auth (из google.auth import app_engine), который у меня естьустановлен в папку /lib и добавлен vendor.add('lib') в appengine_config.py

Однако при развертывании из облачного SDK Google в стандартной среде ядра приложения появляется следующая ошибка:

'importError: невозможно импортировать базу имен'

Я также получаю сообщение об ошибке:

'ImportError: Нет модуля с именем pyasn1.codec.der'

Для обеих проблем я дважды проверил, что базовый и pyasn1.codec.der модули действительно присутствуют в папке lib.В обоих случаях они таковы.

Кто-нибудь знает, в чем может быть проблема?

from google.auth import app_engine
import googleapiclient.discovery

Полный отсчет здесь:

base

Traceback (most recent call last):
  File "/base/alloc/tmpfs/dynamic_runtimes/python27g/7679791231c143f9/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/base/alloc/tmpfs/dynamic_runtimes/python27g/7679791231c143f9/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/base/alloc/tmpfs/dynamic_runtimes/python27g/7679791231c143f9/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "/base/data/home/apps/e~emailtest69/20190507t182648.418021119853034691/main.py", line 23, in <module>
    from google.auth import app_engine
  File "/base/data/home/apps/e~emailtest69/20190507t182648.418021119853034691/lib/google/auth/app_engine.py", line 29, in <module>
    from google.auth import crypt
  File "/base/data/home/apps/e~emailtest69/20190507t182648.418021119853034691/lib/google/auth/crypt/__init__.py", line 38, in <module>
    from google.auth.crypt import base
ImportError: cannot import name base

pyasn1.codec.der

traceback (most recent call last):
  File "/base/alloc/tmpfs/dynamic_runtimes/python27g/7679791231c143f9/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/base/alloc/tmpfs/dynamic_runtimes/python27g/7679791231c143f9/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/base/alloc/tmpfs/dynamic_runtimes/python27g/7679791231c143f9/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "/base/data/home/apps/e~emailtest69/20190507t182648.418021119853034691/main.py", line 23, in <module>
    from google.auth import app_engine
  File "/base/data/home/apps/e~emailtest69/20190507t182648.418021119853034691/lib/google/auth/app_engine.py", line 29, in <module>
    from google.auth import crypt
  File "/base/data/home/apps/e~emailtest69/20190507t182648.418021119853034691/lib/google/auth/crypt/__init__.py", line 39, in <module>
    from google.auth.crypt import rsa
  File "/base/data/home/apps/e~emailtest69/20190507t182648.418021119853034691/lib/google/auth/crypt/rsa.py", line 27, in <module>
    from google.auth.crypt import _python_rsa
  File "/base/data/home/apps/e~emailtest69/20190507t182648.418021119853034691/lib/google/auth/crypt/_python_rsa.py", line 24, in <module>
    from pyasn1.codec.der import decoder
ImportError: No module named pyasn1.codec.der

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

У меня была такая же проблема, и я захожу в каталог "google" и удаляю "auth" вручную.После того, как я запускаю

pip install google-auth

, и он начинает работать.

0 голосов
/ 09 мая 2019

Убедитесь, что модули и объекты Python установлены правильно.Обратите внимание, что в среде выполнения App Engine Python клиентские библиотеки Python должны быть встроены в ваше приложение, поскольку они не установлены в нем.

Дополнительные ссылки обсуждаются здесь [1] специально для Google Docs API.

Также убедитесь, что вы получили учетные данные с помощью [2]:

из google.auth import app_engine
credentials = app_engine.Credentials ()

Поскольку ошибка исходит от GoogleМодуль .auth.crypt вы также можете проверить на этой странице [3] для получения дополнительной информации.

[1] https://developers.google.com/docs/api/how-tos/libraries#python
[2] https://github.com/googleapis/google-auth-library-python/blob/master/docs/user-guide.rst#the-app-engine-standard-environment
[3] https://google -auth.readthedocs.io / ен / последний / ссылка / google.auth.crypt.html # модуль-google.auth.crypt

...