Я пытаюсь установить в Google App Engine стандартную среду Python37. У меня была предыдущая версия, которая не использовала pytz или запросы, однако использовала внешние библиотеки python.
После добавления этих зависимостей и развертывания, а затем просмотра веб-сайта я получаю 500 ошибок. Глядя на журналы, он говорит:
ModuleNotFoundError: Нет модуля с именем 'pytz'
ModuleNotFoundError: нет модуля с именем "запросы"
Документы говорят, что зависимости для приложений Python объявляются в стандартном файле требований.txt. Что я сделал.
Содержание требования.txt
нажмите == 6.7
Колба == 1.0.2
GeoJSON == 2.4.0
itsdangerous == 0,24
Jinja2 == 2,10
MarkupSafe == 1,0
PKG-ресурсы == 0.0.0
PyMongo == 3.7.1
pytz == 2018,5
Werkzeug == 0.14.1
Мой app.yaml
runtime: python37
handlers:
- url: /static
static_dir: static
- url: /.*
script: auto
Начало main.py
import json
import time
import pytz
import requests
Ошибка из трассы стека:
Traceback (most recent call last):
File "/env/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583,
in spawn_worker
worker.init_process()
File "/env/lib/python3.7/site-packages/gunicorn/workers/gthread.py",
line 104, in init_process
super(ThreadWorker, self).init_process()
File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line
129, in init_process
self.load_wsgi()
File "/env/lib/python3.7/site-packages/gunicorn/workers/base.py", line
138, in load_wsgi
self.wsgi = self.app.wsgi()
File "/env/lib/python3.7/site-packages/gunicorn/app/base.py", line 67,
in wsgi
self.callable = self.load()
File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line
52, in load return
self.load_wsgiapp()
File "/env/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line
41, in load_wsgiapp
return util.import_app(self.app_uri)
File "/env/lib/python3.7/site-packages/gunicorn/util.py", line 350, in
import_app
__import__(module)
File "/srv/main.py", line 4, in <module>
import pytz
ModuleNotFoundError: No module named 'pytz''enter code here'
Я установил и протестировал эти модули локально на GAE и подтвердил, что они работают. Ошибки приходят только при развертывании. Будем очень благодарны за любые предложения по устранению этих ошибок и развертыванию.
редактировать:
Я обновил свой файл требований.txt, чтобы добавлять запросы и удалять pkg-ресурсы, поскольку они начали давать ошибки при сборке. Содержание требования.txt
нажмите == 6.7
Колба == 1.0.2
GeoJSON == 2.4.0
itsdangerous == 0,24
Jinja2 == 2,10
MarkupSafe == 1,0
PyMongo == 3.7.1
pytz == 2018,5
Запросы == 2.18.4
Werkzeug == 0.14.1
Я смог развернуть следующее приложение:
В app.yaml
:
runtime: python37
handlers:
- url: /static
static_dir: static
- url: /.*
script: auto
В requirements.txt
:
click==6.7
Flask==1.0.2
geojson==2.4.0
itsdangerous==0.24
Jinja2==2.10
MarkupSafe==1.0
pymongo==3.7.1
pytz==2018.5
requests==2.18.4
Werkzeug==0.14.1
В main.py
:
from flask import Flask
import pytz
app = Flask(__name__)
@app.route('/')
def hello():
"""Return a friendly HTTP greeting."""
return pytz.VERSION
Это успешно возвращает версию pytz
.
Вы уверены, что новый файл требований содержит pytz
и развертывается? Вы можете проверить, выполнив навигацию в Облачной консоли Google, чтобы:
Ресурсы > App Engine > Службы, а затем в строке со службой Diagnose > Tools > Source. Оттуда вы можете найти файл requirements.txt
и убедиться, что он содержит pytz==2018.5
.
requests
вrequirements.txt