Error launching Flask app with error “Failed to find Flask application”

半世苍凉 提交于 2021-02-18 10:41:08

问题


I'm new to Flask. To launch the flask app I did python -m flask run but I'm repeatedly getting an error

Failed to find Flask application or factory in module "app". Use "FLASK_APP=app:name to specify one.

I am using a virtualenv on a Windows 10 machine

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "Hello, World!"

if __name__ == '__main__':
    app.run(debug=True)

I would expect a web server to start and to be able to navigate to a local page and view "Hello, World!"


回答1:


Instead of just "flask" use FLASK_APP=theflaskapp.py, like what Marco suggested:

 env FLASK_APP=theflaskapp.py python -m flask run

This should fix it, if not, make sure you are executing the command to run the script in the same directory as it. You should also check if the problem is in flask or not by running "python theflaskapp.py" (In the same directory as the flask app still) and see if it works at all.




回答2:


You need to specify what file you want to work with. Try this.

For Windows:

set FLASK_APP=app.py
python -m flask run

For Mac OS and Linux:

export FLASK_APP=app.py
python -m flask run



回答3:


Reproducing the problem, and fixing it

Hello, I have reproduced the problem This is the error code:

Error: Failed to find Flask application or factory in module "src.app". Use "FLASK_APP=src.app:name to specify one.

Steps of reproducing the error:

  1. Create a file called app.py
  2. inside app.py put this code:
from flask import Flask

def create_app():
    app = Flask("abc")

    @app.route('/')
    def hello_world():
        return 'Hello, World!'

Or let the file be empty, like this:

# This is an empty file
# There is no flask application here
  1. Inside CLI run these commands:
export FLASK_APP=app.py
flask run
  1. watch the error appear on the screen

Solution 1 :

  1. make the function return the app
  2. Clearly create a variable called app and make it equal to the return value of the function, like this:
from flask import Flask
def create_app():
    app = Flask(__name__)
    @app.route('/')
    def hello_world():
        return 'Hello, World!'
    return app
app = create_app()

Solution 2: Get the app outside of the function:

from flask import Flask

app = Flask("abc")

@app.route('/')
def hello_world():
    return 'Hello, World!'



回答4:


Another working option is executing this command instead of flask run :

flask run --host=0.0.0.0

I had the same issue and I tried all the mentioned answers here but couldn't work finally this did the trick.




回答5:


I'm getting the same error. The problem is you have to set the environment variable FLASK_APP in current project.

However, I have easiest way to solve this problem. Instead of using flask run command you can use python app.py.

"app.py" is your application entry point.




回答6:


I had a similar problem. It seems to work fine from the command prompt with python app.py. However, it would fail to launch with VS Code Debug.

The trick was to add:

server = app.server

before calling the app.run_server() portion




回答7:


Try removing the spaces from this line of code, this is what fixed it for me when I had this error:

app=Flask(__name__)



回答8:


In my case was a very simple issue, the activate.bat file was setup as Macintosh (CR) I changed to Windows (CR LF) and that worked for me.

Explanation: In windows OS, for the instruction to take effect, for example [set FLASK_ENV = development] a strong carriage return is needed, such as the (CR LF), that is what I could verify in my case. You can try to run the SET instruction in the console, cmd, and check if the FLASK settings are reflected. I understand that it is more a problem of the configuration of the environment and not of the application itself.



来源:https://stackoverflow.com/questions/57718786/error-launching-flask-app-with-error-failed-to-find-flask-application

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!