1

Я пытался добавить возможность протоколирования GAE StackDriver на: https://cloud.google.com/logging/docs/reference/libraries#client-libraries-resources-pythonImportError: Нет модуль с именем auth.credentials

... к простой веб-сервис, который я работает, и я получаю следующее сообщение об ошибке:

ERROR  2017-02-01 02:46:05,320 - root - Traceback (most recent call last): 
    File "/home/ubuntu/workspace/.../bootstrap.py", line 11, in <module> 
    from app import create_app 
    File "/home/ubuntu/workspace/.../app/__init__.py", line 31, in <module> 
    from handlers.hdl_logger import blpLog 
    File "/home/ubuntu/workspace/.../app/handlers/hdl_logger.py", line 15, in <module> 
    from google.cloud import logging 
    File "/usr/local/lib/python2.7/dist-packages/google/cloud/logging/__init__.py", line 18, in <module> 
    from google.cloud.logging.client import Client 
    File "/usr/local/lib/python2.7/dist-packages/google/cloud/logging/client.py", line 32, in <module> 
    from google.cloud.client import JSONClient 
    File "/usr/local/lib/python2.7/dist-packages/google/cloud/client.py", line 17, in <module> 
    import google.auth.credentials 
ImportError: No module named auth.credentials 

У меня все это работает в виртуальной среде. Я внимательно посмотрел на зависимости, разрешения и проверил dist-packages/google/dir, чтобы подтвердить, что пакет auth находится там.

Любая помощь по устранению неполадок очень ценится.

ответ

1

Предполагая, что вы используете стандарт GAE (не гибкий), клиентские библиотеки google-cloud-python могут иметь некоторые проблемы с пространством имен, поскольку он не использует virtualenv. В настоящее время ведется работа над тем, чтобы сделать его более плавным.

Решение проблемы заключается в том, чтобы взломать путь импорта. Взгляните на my answer here.

Однако, если вы используете стандарт GAE, вам совсем не нужна клиентская библиотека. Все сообщения Python logging, такие как logging.info, должны автоматически появляться в Stackdriver Logging с правильным набором ресурсов и ярлыков.

0

Спасибо за ответы.

Я смог решить проблему. Он был привязан к gcloud install, virtualenv, gcloud config и настройке аутентификации по умолчанию.

Мой gcloud должен был быть установлен в глобальном пространстве имен, а затем моя конфигурация gcloud работала в venv.