首页 > 解决方案 > '没有名为'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.pyrequirements.txtProcfileruntime.txt-arsenal.db我在此代码中连接的数据库。存储库在这里

编辑2:我已经尝试按照@Stanley 的建议卸载和安装Flask,但不幸的是问题仍然存在。

编辑3Procfile包含 web: gunicorn deploy: app

标签: pythonrestherokuflask

解决方案


Procfile包含_web: gunicorn deploy: app

该文件的格式非常重要。如果之前确实有空格web:,请将其删除。

传递的参数gunicorn 告诉它应该将哪个模块和变量作为 WSGI 入口点。在您的情况下,您的模块是server(文件的名称),而您的 WSGI 可调用对象是api.

将所有这些放在一起,您Procfile应该包含:

web: gunicorn server:api

server注意和之间没有空格api


推荐阅读