из google.cloud.logging_v2 типы импорта ImportError: невозможно импортировать типы имен - PullRequest
0 голосов
/ 05 октября 2018

Я работаю над небольшим приложением, работающим на GAE.Когда я развертываю свое приложение или пытаюсь использовать virtualenv (согласно документации), я вижу следующее в журналах в Cloud Platform (они также локально тоже), когда я пытаюсь получить доступ к приложению:

File "/base/data/home/apps/d~my-project/gen-debug:413039252702584887/main.py", line 10, in <module>
    from google.cloud import logging_v2
File "/base/data/home/apps/d~my-project/gen-debug:413039252702584887/lib/google/cloud/logging_v2/__init__.py", line 17, in <module>
    from google.cloud.logging_v2 import types
ImportError: cannot import name types

Мой код, выдающий эту ошибку, выглядит следующим образом:

from google.cloud import logging_v2
client = logging_v2.LoggingServiceV2Client()
c = client.list_log_entries(["my-project"], filter_='resource.type="global" AND jsonPayload.hello="there"')
l = list(c)
l1 = l[0]
desc, value = l1.ListFields()[1]
print desc.camelcase_name, dict(value.items())

То, что так странно, так это то, что в Google я могу войти в сеанс Cloud Shell, войти в ipython и этот кодполностью работает.

me@cloudshell:~ (my-project)$ ipython2
Python 2.7.13 (default, Sep 26 2018, 18:42:22)
Type "copyright", "credits" or "license" for more information.
IPython 5.8.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: from google.cloud import logging_v2
...: client = logging_v2.LoggingServiceV2Client()
...: c = client.list_log_entries(["my-project"], filter_='resource.type="global" AND jsonPayload.hello="there"')
...: l = list(c)
...: l1 = l[0]
...: desc, value = l1.ListFields()[1]
...: print desc.camelcase_name, dict(value.items())
...: 
jsonPayload {u'hello': u'there'}

Что происходит, что делает запуск этого в GAE отличным от запуска в Google Cloud Shell?Эта ошибка импорта кажется проблемой Google, но я не уверен.

1 Ответ

0 голосов
/ 05 октября 2018

Это похоже на общий клиент Python для ведения журнала Stackdriver .Который не предназначен для / не поддерживается в приложениях GAE первого поколения (т.е. Python 2.7), поскольку в эту среду выполнения уже встроена собственная (настраиваемая) регистрация стековых драйверов.

Из Поддерживаемые среды :

Следующие экземпляры виртуальных машин поддерживают ведение журнала Stackdriver с использованием собственного программного обеспечения, возможно, включая собственные версии или конфигурации агента ведения журнала Stackdriver.Установка на них агента ведения журнала Stackdriver вручную не поддерживается:

...