Google App Engine - Python 3 - ModuleNotFoundError: нет модуля с именем «pytz» - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь развернуть в Google App Engine в стандартной среде Python37.У меня работала предыдущая версия, в которой не использовались pytz или запросы, но использовались внешние библиотеки python.

После добавления этих зависимостей и развертывания, а затем просмотра веб-сайта я получаю ошибку 500.Глядя на журналы, он говорит:

ModuleNotFoundError: нет модуля с именем 'pytz'
ModuleNotFoundError: нет модуля с именем 'запросы'

документы1011 * говорит, что зависимости для приложений Python объявлены в стандартном файле needs.txt.Что я и сделал.

Содержание файла require.txt

click == 6.7
Flask == 1.0.2
geojson == 2.4.0
его опасно == 0.24
Jinja2 == 2.10
MarkupSafe == 1.0
pkg-resources == 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 и убедился, что они работают.Ошибки появляются только при развертывании.Будем весьма благодарны за любые предложения о том, как исправить эти ошибки и успешно развернуть их.

edit:

Я обновил файл require.txt, чтобы добавлять запросы и удалять pkg-ресурсыкак то начал давать ошибки при сборке.Содержимое require.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
запросов == 2.18.4
Werkzeug == 0.14.1

1 Ответ

0 голосов
/ 21 сентября 2018

Мне удалось развернуть следующее приложение:

В 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 Cloud Console по адресу:

Ресурсы > App Engine > Сервисы , затем в строке с вашим сервисом, Диагностика > Инструменты > Источник .Оттуда вы можете найти файл requirements.txt и убедиться, что он содержит pytz==2018.5.

...