【问题标题】:'No module named 'deploy' : What does this error mean and how do I fix it?'没有名为'deploy'的模块:这个错误是什么意思,我该如何解决?
【发布时间】:2019-07-27 11:29:25
【问题描述】:

我创建了我的第一个 Flask 应用程序 - 一个非常基本的 API,用于从本地数据库获取数据并返回 JSON 数据。 API 在本地端口上工作。然后我尝试在 Heroku 上托管它,这也很成功——它说 Build Succeeded。

但是,当我尝试运行该应用程序时,它会抛出此应用程序错误。当我查看heroku logs --tail 时,它显示此错误:ModuleNotFoundError: No module named 'deploy'

Here 的应用程序。

这是我的 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')

我做错了什么?我关注了这个博客herethis YouTube 视频,以防万一。

编辑 1:文件夹中的文件是 - 以上代码在 server.pyrequirements.txtProcfileruntime.txtarsenal.db - 我连接到的数据库这段代码。仓库是here

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

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

【问题讨论】:

  • 文件夹设置如何,可以添加吗?
  • 你的意思是文件夹里有什么?在server.pyrequirements.txtProcfileruntime.txtarsenal.db 中有这段代码——我在这段代码中连接的数据库。我应该更新问题以包括这些细节。 @斯坦利
  • 查看代码我看不到您正在尝试导入部署甚至使用模块的实例,是有更多代码还是我忽略了什么?
  • 这正是我想了解的。我不确定这个部署模块是什么以及它来自哪里。没有更多的代码或文件,你可以相信我的话。
  • 我明白了,这可能有点超出我的理解,因为我精通 python,但没有像我想的那样接触烧瓶!但是通过互联网查看,似乎解决方案是 pip 卸载烧瓶并再次安装,您尝试过吗?

标签: python rest heroku flask


【解决方案1】:

Procfile 包含 web: gunicorn deploy: app

此文件的格式非常重要。如果web:之前确实有空格,请去掉。

传递给gunicorn tell it what module and variable it should us as the WSGI entry point 的参数。在你的情况下,你的模块是server(你的文件名),你的WSGI callable是api

综上所述,您的Procfile 应包含:

web: gunicorn server:api

注意serverapi 之间没有空格。

【讨论】:

  • 我与 gunicorn 摔跤了很多次,但最终还是选择了 uwsgi。现在我的应用程序没有显示Application Failed,而是显示Internal Server Error。我想这是一种进步?
  • 应用程序失败和内部服务器错误可能是同一件事:HTTP 500 响应。无论哪种情况,请检查您的服务器日志(例如通过heroku logs)。你应该在那里找到一些更有用的信息。如果您无法解决问题或找到现有问题,请随时发布另一个问题。
猜你喜欢
  • 1970-01-01
  • 2012-07-09
  • 2013-12-08
  • 1970-01-01
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
  • 2021-06-25
  • 2019-05-17
相关资源
最近更新 更多