"ImportError: нет модуля с именем pkg_resources" при импорте google.cloud.datastore

Я пытаюсь использовать хранилище данных Google Cloud, но при импорте google.cloud.datastore выдается ошибка ImportError:

ERROR    2018-03-13 19:28:29,013 wsgi.py:263] 
Traceback (most recent call last):
  File "/home/<user>/Software/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/home/<user>/Software/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/home/<user>/Software/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "/home/<user>/Projects/<my_project>/main.py", line 1, in <module>
    from my_project import app
  File "/home/<user>/Projects/<my_project>/<my_project>/__init__.py", line 2, in <module>
    from my_project.submit.controllers import submit
  File "/home/<user>/Projects/<my_project>/<my_project>/submit/controllers.py", line 6, in <module>
    from . import model_datastore
  File "/home/<user>/Projects/<my_project>/<my_project>/submit/model_datastore.py", line 2, in <module>
    from google.cloud import datastore
  File "/home/<user>/Projects/<my_project>/env/local/lib/python2.7/site-packages/google/cloud/datastore/__init__.py", line 57, in <module>
    from pkg_resources import get_distribution
ImportError: No module named pkg_resources

Я на Linux Mint пытаюсь запустить локальный сервер разработчиков Google App Engine.

Я использую виртуальную среду. И setuptools, и pkg_resources устанавливаются и обновляются в виртуальной среде. Когда я вхожу в интерпретатор строки Python CMD из виртуального ENV и import pkg_resourcesработает нормально. Когда я запускаю сервер приложений Google Engine, выполнив dev_appserver app.yamlвсе работает нормально, пока я не получаю доступ к странице, которая активирует обработчик, который импортирует хранилище данных, затем я получаю эту ошибку.

Ни одна из подобных публикаций об ошибке импорта 'pkg_resources` не была полезной.

Если есть какая-либо другая информация, которую я могу предоставить, которая может помочь, пожалуйста, дайте мне знать. Спасибо!

1 ответ

Решение

В стандартной среде вам нужно установить все ваши зависимости внутри вашего приложения. См. Использование сторонних библиотек.

Независимо от того, что вы установили в локальной среде (виртуальной или нет), не имеет значения, GAE не знает, как их использовать, и ваше приложение может не работать должным образом локально и определенно не будет работать при развертывании в GAE.

Трассировка указывает, что вы загружаете библиотеку хранилища данных из виртуальной среды, а не из своего приложения, поэтому, скорее всего, она не работает:

.../env/local/lib/python2.7/site-packages/google/cloud/datastore/__init__.py

Вам нужно исправить установку зависимостей вашего приложения.

Это обсуждение также может быть интересным: нет модуля с именами предупреждений при локальном запуске GAE в virtualenv

Другие вопросы по тегам