我试图在标准的Python37环境中部署到Google。我以前的版本不使用pytz或请求,但是使用了外部python库。
在添加这些依赖项并进行部署之后,然后查看网站,我得到了一个500错误。看看上面写着的日志:
ModuleNotFoundError:没有名为“pytz”的模块 ModuleNotFoundError:没有名为“请求”的模块
文档说,Python的依赖项是在一个标准requirements.txt文件中声明的。我已经做过了。
requirements.txt含量
click==6.7 Flask==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上本地安装和测试了这些模块,并验证了它们的工作。错误只有在部署时才会出现。任何关于如何修复这些错误和成功部署的建议都将不胜感激。
编辑: 我已经更新了我的requirements.txt,以添加请求并删除pkg-资源,因为这会在构建时产生错误。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
发布于 2018-09-21 10:00:53
我能够部署以下应用程序:
在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控制台中导航到:
Resources > App Engine > Services,然后在服务行中,诊断>工具E 217E 118
SourceE 219
。从那里您可以找到requirements.txt
文件并验证它是否包含pytz==2018.5
。
https://stackoverflow.com/questions/52446172
复制