Google App Engine - Python 3 - ModuleNotFoundError:没有名为'pytz'的模块



我正在尝试在标准的Python37环境中部署到Google App Engine。我有一个以前的版本,它不使用pytz或请求,但确实使用了外部python库。

添加这些依赖项并部署然后查看网站后,我收到 500 错误。查看日志,它说:

ModuleNotFoundError:没有名为"pytz">
的模块ModuleNotFoundError:没有名为"requests"的模块

文档说,Python 应用程序的依赖项是在标准 requirements.txt 文件中声明的。我已经做到了。

要求内容.txt

点击==

6.7 烧瓶==1.0.2
地理==2.4.0 它的危险==0.24 金贾2==2.10 标记安全==1.0 pkg-resources==0.0.0


pymongo==3.7.1
pytz==2018.5
werkzeug==0.14.1


我的应用程序.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
地理==2.4.0 它的危险==0.24
金贾2==2.10
标记安全==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 Cloud Console 中导航来检查:

资源>App Engine>服务",然后在与您的服务一起的行中,诊断>工具>。从那里您可以找到requirements.txt文件并验证它是否包含pytz==2018.5

最新更新