Ошибка импорта: нет модуля с именем google.cloud.error_reporting - PullRequest
0 голосов
/ 02 апреля 2019

Несколько недель назад я установил Ubuntu 18.10 дома и сегодня решил перейти с Windows на эту ОС дома.

Я использую его для разработки на Python.

К сожалению,Я столкнулся с какой-то странной ошибкой и не знаю, как ее решить.

Когда я пытаюсь запустить свой проект, я вижу следующую ошибку во время простого запроса

File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/runtime/sandbox.py", line 1154, in load_module
    raise ImportError('No module named %s' % fullname)
ImportError: No module named google.cloud.error_reporting

Когда я запускаю пип-шоуgoogle_cloud_error_reporting показывает правильную информацию о пакете

DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.
Name: google-cloud-error-reporting
Version: 0.30.1
Summary: Stackdriver Error Reporting API client library
Home-page: https://github.com/GoogleCloudPlatform/google-cloud-python
Author: Google LLC
Author-email: googleapis-packages@google.com
License: Apache 2.0
Location: /home/p35/.local/share/virtualenvs/tt-T7X9xdJU/lib/python2.7/site-packages
Requires: google-cloud-logging
Required-by: 

Вывод gcloud --version

Google Cloud SDK 240.0.0
alpha 2019.03.22
app-engine-python 1.9.84
app-engine-python-extras 1.9.84
beta 2019.03.22
bq 2.0.42
cloud-datastore-emulator 2.1.0
core 2019.03.22
gsutil 4.37
kubectl 2019.03.22

Я попытался переустановить pipenv , setuptools, сам проект зависит, но мне ничего не помогает.

Упрощенный проект https://github.com/pahan35/google-cloud-error-reporting-import-bug

Есть идеи, как решить эту проблему?

1 Ответ

0 голосов
/ 02 апреля 2019

Я нашел обходной путь для этой проблемы: мы должны добавить зависимости Google через vendor.add([any_accessible_folder]) и затем либо запустить проект под другим интерпретатором, либо нам нужно удалить все зависимости Google из текущего интерпретатора pipenv.

Обходной путь (правильное решение все еще приветствуется)

Для этого конкретного проекта я сделал следующие шаги.

Общие шаги

  1. Установите все зависимости pipenv в lib папка с помощью команды

    pipenv run pip install -r <(pipenv lock -r) -t lib --upgrade

  2. Используйте вашу локальную папку в качестве другого источника пакетов в вашем файле ввода перед импортированной зависимостью облака Google

from google.appengine.ext import vendor

vendor.add('lib')

from google.cloud import error_reporting # causing problems dependency
Затем вам нужно либо удалить пакеты google из вашего интерпретатора pipenv , либо использовать другой.Я протестировал оба: B проще, но может вызвать неожиданные конфликты или пропущенные пакеты

A.Очистить текущий интерпретатор pipenv от всех облачных зависимостей Google

  1. Войдите в оболочку pipenv с помощью команды pipenv shell
  2. См. Установленные пакеты с помощью pip list
  3. Удалитьвсе облачные пакеты Google, а также некоторые дополнительные данные, замеченные в ходе повторных запусков

    pip uninstall google_cloud_error_reporting google_auth google_core google_cloud_core google_api_core google_cloud_logging googleapis_common_protos protobuf

    Может быть, мы можем оптимизировать его, удалив все пакеты из интерпретатора pipenv?

B.Используйте другой интерпретатор

  1. Найдите абсолютный путь к желаемому интерпретатору.Я использовал глобальный /usr/bin/python
  2. Запустите проект с помощью этого интерпретатора, например /usr/bin/python $(which dev_appserver.py) .

Проект

Пример проекта содержит примененыобходной путь

...