У меня странная проблема с зависимостями при развертывании моего приложения в Google App Engine (Python 2.7).
Я указал свои зависимости в файле needs.txt:
Flask==1.0.2
werkzeug>=0.14
flask-cors
twilio
httplib2
gunicorn
Jinja2
google-cloud-ndb
exponent_server_sdk
Они прекрасно работают с локальным сервером разработки при локальной установке с помощью pip из папки needs.txt.
Однако при развертывании в обработчике приложений модуль exponent_server_sdk не был установлен (ImportError : Нет модуля с именем exponent_server_sdk).
Обычно я развертываю, помещая в репозиторий git, который затем развертывается с помощью Google Cloud Build ("gcr.io/cloud-builders/gcloud"). При развертывании нет ошибок, и другие зависимости в файле require.txt работают нормально, например, twilio или Jinja2.
Во время исследования я пытался вытолкнуть его прямо с машины для разработки с помощью gcloud app deploy. Когда я делаю это, по какой-то странной причине, exponent_server_sdk доступен и работает правильно.
Это поведение кажется мне очень странным, и я не могу найти никаких документов о людях, испытывающих подобные ошибки. Интересно, кто-нибудь может дать мне какие-либо рекомендации о том, что может быть причиной этой проблемы, или о местах, где я могу искать ошибки (например, журналы процесса установки файла needs.txt во время развертывания / запуска экземпляра).
В ответ на комментарии:
Я работаю в стандартной среде.
Мой cloudbuild.yaml выглядит следующим образом:
steps:
- name: "gcr.io/cloud-builders/gcloud"
args: ["app", "deploy", "app.yaml", "dispatch.yaml", "service_1.yaml", "service_2.yaml", "service_3.yaml", "index.yaml"]
timeout: "1600s"
Файл .yaml для службы, в которой возникает ошибка, выглядит следующим образом:
runtime: python27
api_version: 1
threadsafe: true
service: notifications
libraries:
- name: ssl
version: latest
handlers:
- url: /.*
script: notifications.app