简体   繁体   中英

Error launching Flask app with error "Failed to find Flask application"

I'm new to Flask . To launch the flask app, I did python -m flask run but I repeatedly get the 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 expected a web server to start and to be able to navigate to localhost http://127.0.0.1:5000/ where I could view Hello, World! on my browser, but that never happened.

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.

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!'

# 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:
 

Solution 2: Get the app outside of the function:

 

solution for flask Error: Could not locate a Flask application. You did not provide the "FLASK_APP" environment variable, and a "wsgi.py" or "app.py" module was not found in the current directory. on windows when you tried set FLASKAPP=appname.py if your using PowerShell and if get the above error try this 👇👇

$env:FLASK_APP = "filename"
$env:FLASK_ENV = "development"
Flask run

try it if your having trouble launching the flask app.

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

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.

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.

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

The simplest way to run your app without getting any issue is to create the app then run python app.py

from flask import (
    Flask, 
    jsonify
)

# Function that create the app 
def create_app(test_config=None ):
    # create and configure the app
    app = Flask(__name__)

    # Simple route
    @app.route('/')
    def hello_world(): 
        return jsonify({
           "status": "success",
            "message": "Hello World!"
        }) 
     
    return app # do not foget to return the app

APP = create_app()

if __name__ == '__main__':
    # APP.run(host='0.0.0.0', port=5000, debug=True)
    APP.run(debug=True)

On venv and my Windows10 only this syntax works:

set FLASK_APP=name_of_file:name_of_var_app
If file is application.py and 'app = Flask(__name__)',
run:
set FLASK_APP=application:app

You should change the name of the file, I have the same problem. So, I changed the name of the app file and It works for me. At first my app file name is 'socket.py' and I change it to 'app.py'.

我的问题是python文件没有执行权限:

chmod a+x app.py

Similar issue. I was running the code in vs code. Installed python extension and after selecting a different python interpreter( in my case 3.10,5 64 bit). got a play button on the top right corner of my vs code interface. That solved the issue for me.

Instead of providing a super straightforward "try this" suggestion, I'd recommend going straight to the flask source code to where this exception gets thrown, and reverse engineer from there. https://github.com/pallets/flask/blob/main/src/flask/cli.py#L78-L82

You can open this in your editor by going to the site-packages/flask/cli.py file and setting breakpoints around where this error gets thrown, and poke around from there.

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.

super simple in my case, and almost stupid...I had forgotten to save the file (CTRL+S), and I got exactly the same error. Once I saved the file, it worked directly!

尝试从这行代码中删除空格,当我遇到此错误时,这是​​为我解决的问题:

app=Flask(__name__)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM