无法在“main”中找到应用程序对象“app”-Heroku CLI

Posted

技术标签:

【中文标题】无法在“main”中找到应用程序对象“app”-Heroku CLI【英文标题】:Failed to find application object 'app' in 'main' - Heroku CLI 【发布时间】:2019-08-26 20:21:39 【问题描述】:

我尝试将代码 from this GitHub repo 推送到我的 Heroku 应用程序,但我不断收到相同的错误,并且我的进程不断退出并出现错误 1。我查看了这些帖子来解决我的问题:

gunicorn causing errors in heroku Flask app dont start on heroku server Python Flask heroku application error

ma​​in.py

import os
import sys
import urllib.request
import requests
from urllib.parse import urljoin
from bs4 import BeautifulSoup
from flask import Flask, render_template, request, redirect

ic = Flask(__name__)

count = 0


@ic.route("/")
def main():
    if count == 1:
        return render_template("index.html", result=str((str(count) + " Image Downloaded !")))
    else:
        return render_template("index.html", result=str((str(count) + " Images Downloaded !")))


@ic.route("/get_images", methods=['POST'])
def get_images():
    _url = request.form['inputURL']
    try:
        global count
        count = 0
        code = requests.get(_url)
        text = code.text
        soup = BeautifulSoup(text)
        for img in soup.findAll('img'):
            count += 1
            if (img.get('src'))[0:4] == 'http':
                src = img.get('src')
            else:
                src = urljoin(_url, img.get('src'))
            download_image(src, count)
        return redirect("http://localhost:5000")
    except requests.exceptions.HTTPError as error:
        return render_template("index.html", result=str(error))


def download_image(url, num):
    try:
        image_name = str(num) + ".jpg"
        image_path = os.path.join("images/", image_name)
        urllib.request.urlretrieve(url, image_path)
    except ValueError:
        print("Invalid URL !")
    except:
        print("Unknown Exception" + str(sys.exc_info()[0]))


if __name__ == "__main__":
    ic.run()

过程文件

heroku ps:scale web=1
web: gunicorn main:app

【问题讨论】:

“所有代码都在上面列出的 repo 中”——请直接将相关代码复制到您的问题中。这可能包括您的package.json 以及您的主脚本的minimal reproducible example 版本。 @Chris 是的,现在就这样做 【参考方案1】:

当你跑步时

gunicorn main:app

您是telling gunicorn,您的应用程序的入口点是main 模块中的app 变量。你没有app 变量;您的 Flask 应用程序名为 ic

您也不需要heroku ps:scale web=1 行。这是您可以在 本地 机器上运行的命令,以将您的 web 进程类型扩展到一个测功机。

把你的Procfile改成说

web: gunicorn main:ic

提交并重新部署。

【讨论】:

以上是关于无法在“main”中找到应用程序对象“app”-Heroku CLI的主要内容,如果未能解决你的问题,请参考以下文章

SDL_ttf 找不到“SDL.h”,但 main.cpp 可以

将变量从main.js暴露给vue-cli项目中的其他脚本

在 Parse.Cloud 代码中调用 Parse.Query 时无法找到对象

Vue路由器无法加载组件

我无法在 QOpenGLWidget 上绘画

错误:无法找到或加载主类 sample.Main