python - '没有名为'deploy'的模块:这个错误是什么意思,我该如何解决?
问题描述
我创建了我的第一个 Flask 应用程序 - 一个非常基本的 API,用于从本地数据库获取数据并返回 JSON 数据。API 在本地端口上工作。然后我尝试在 Heroku 上托管它,这也很成功——它说 Build Succeeded。
但是,当我尝试运行该应用程序时,它会抛出此应用程序错误。当我查看 时heroku logs --tail
,它显示此错误:ModuleNotFoundError: No module named 'deploy'
。
这是应用程序。
这是我的 API 代码:
from flask import Flask, request
from flask_restful import Resource, Api
from sqlalchemy import create_engine
from json import dumps
from flask_jsonpify import jsonify
db_connect = create_engine('sqlite:///arsenal.db')
app = Flask(__name__)
api = Api(app)
class Players(Resource):
def get(self):
player_dict = dict()
conn = db_connect.connect() # connect to database
query = conn.execute("SELECT * FROM Players")
players = [i for i in query.cursor.fetchall()]
for player in players:
player_dict.update({player[1]:player[2]})
return {'players': player_dict}
api.add_resource(Players, '/players') # Route_1
if __name__ == '__main__':
app.run(port='5200')
我究竟做错了什么?我在这里关注了这个博客和这个YouTube 视频,以防万一。
编辑 1:文件夹中的文件是 - 上面的代码server.py
,requirements.txt
,Procfile
和runtime.txt
-arsenal.db
我在此代码中连接的数据库。存储库在这里
编辑2:我已经尝试按照@Stanley 的建议卸载和安装Flask,但不幸的是问题仍然存在。
编辑3:Procfile
包含 web: gunicorn deploy: app
解决方案
Procfile
包含_web: gunicorn deploy: app
该文件的格式非常重要。如果之前确实有空格web:
,请将其删除。
传递的参数gunicorn
告诉它应该将哪个模块和变量作为 WSGI 入口点。在您的情况下,您的模块是server
(文件的名称),而您的 WSGI 可调用对象是api
.
将所有这些放在一起,您Procfile
应该包含:
web: gunicorn server:api
server
注意和之间没有空格api
。
推荐阅读
- azure - 如何在不创建任务组参数的情况下在任务组中使用 Key Vault 机密
- raku - 语法中的部分匹配
- powershell - 匹配句子中的连续单词
- google-app-engine - gcloud.app.deploy - 调用者没有权限
- c# - C# ASP.Net:基于会话变量读取和重写文件
- python - 如何使用我使用多线程来加快速度?
- pandas - 使用 python matplotlib 创建多线图
- html - 嵌套组件中的样式段落标签问题
- javascript - Chrome脚本本身可以工作,但在调用函数时不能工作?
- discord.js - Discord.js 特定频道