I want to know the correct way to start a flask application. The docs show two different commands:
$ flask -a sampl
For Linux/Unix/MacOS :-
export FLASK_APP = sample.py
flask run
For Windows :-
python sample.py
OR
set FLASK_APP = sample.py
flask run
Latest documentation has the following example assuming you want to run hello.py
(using .py
file extension is optional):
Unix, Linux, macOS, etc.:
$ export FLASK_APP=hello
$ flask run
Windows:
> set FLASK_APP=hello
> flask run
The flask
command is a CLI for interacting with Flask apps. The docs describe how to use CLI commands and add custom commands. The flask run
command is the preferred way to start the development server.
Use the FLASK_APP
environment variable to point the command at your app. Set FLASK_ENV=development
to run with the debugger and reloader. Never use this command to deploy publicly, use a production WSGI server such as Gunicorn, uWSGI, Waitress, or mod_wsgi.
$ export FLASK_APP=sample
$ export FLASK_ENV=development
$ flask run
On Windows CMD, use set
instead of export
.
>set FLASK_APP=sample
The python sample.py
command runs a Python file and sets __name__ == "__main__"
. If the main block calls app.run()
, it will run the development server.
if __name__ == "__main__":
app.run(debug=True)
Both these commands ultimately start the Werkzeug development server, which as the name implies starts a simple HTTP server that should only be used during development. You should prefer using the flask run
command over the app.run()
method.
it will work in cmd only if you type
> pipenv shell
start subshell in virtual environment first then type
> set FLASK_APP=hello
> flask run