Как правильно импортироватьquesbs_toolbelt в Google App Engine? - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь импортировать пакет reports_toolbelt в google app engine, но получаю ошибку импорта. Уже проверено на https://toolbelt.readthedocs.io/en/latest/adapters.html#appengineadapte и https://cloud.google.com/appengine/docs/standard/python/issue-requests также выдает ту же ошибку.

Хорошо работает на локальном компьютере, но после развертывания появляется ошибка: ImportError: нет модуля с именами reports_toolbelt.adapters

У меня есть это:

import requests
from requests_toolbelt.adapters import appengine

if not os.environ.get('SERVER_SOFTWARE', '').startswith('Google App Engine'):
    appengine.monkeypatch()

needs.txt имеет

requests
requests_toolbelt

Ответы [ 2 ]

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

Я также рекомендовал добавить папку "lib" в интерпретатор IDE.

В IDE IntelliJ, например PyCharm, вы идете в настройки -> проект -> переводчик проекта -> нажмите маленькую кнопку настройки -> показать все

enter image description here

Затем нажмите на значок папки:

enter image description here

Затем нажмите на значок добавления:

enter image description here

Затем выберите папку lib

enter image description here

0 голосов
/ 08 января 2019

Поскольку вы используете Python2.7 в стандартной среде, наличие библиотеки requests_toolbelt в файле requirements.txt недостаточно для ее загрузки в App Engine, поскольку она не является встроенной в . Сторонние библиотеки .

Чтобы добавить его, вы можете выполнить следующие действия, как указано в официальной документации :

  • Запустите следующую команду:

    pip install -t lib -r requirements.txt

    Это установит все пакеты в локальную среду и впоследствии скопирует их в папку lib. Документация по этому вопросу .

  • Создайте следующий файл с именем appengine_config.py:

    from google.appengine.ext import vendor
    # Add any libraries installed in the "lib" folder.
    vendor.add('lib')
    

    Обратите внимание, что этот файл должен находиться в том же корневом пути, что и app.yaml, а строка 'lib' представляет путь от этого корневого каталога к папке, созданной в предыдущей точке.

  • Повторно разверните приложение с помощью gcloud app deploy

Как только это будет сделано, вы сможете запустить приложение без ошибок, связанных с библиотекой.

В качестве примечания, эти шаги являются обязательными только в Python 2.7 в среде Standard App Engine. В Python3 или в Flexible достаточно иметь библиотеки, перечисленные в файле requirements.txt.

...