问题
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:
- Create a file called app.py
- 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
- Inside CLI run these commands:
export FLASK_APP=app.py
flask run
- watch the error appear on the screen
Solution 1 :
- make the function return the app
- 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