Getting Started
Flask is a lightweight WSGI web application framework designed to make getting started quick and easy, with the ability to scale up to complex applications.
Prerequisites
- Python: Version 3.10 or newer is required.
- Package Manager: This guide assumes you are using uv, but you can also use
pip.
Installation
The recommended way to install Flask is using uv. This will install Flask and its core dependencies: Werkzeug (WSGI), The Flask Jinja Environment (templating), Getting Started with the Flask CLI (CLI), and others.
uv add flask
Optional Dependencies
Flask supports several optional features that can be installed as extras:
- Async: Adds support for async routes and handlers.
uv add flask[async] - Dotenv: Automatically loads environment variables from
.envand.flaskenvfiles.uv add flask[dotenv]
Hello World / Quick Start
Create a file named app.py with the following content:
from flask import Flask
# Create the application instance
app = Flask(__name__)
# Define a route and its handler
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
Run the Server
Use the flask CLI to start the development server:
flask run
The application will be available at http://127.0.0.1:5000/.
Configuration
Flask can be configured via environment variables or by loading configuration files.
Environment Variables
FLASK_APP: Specifies the application to load. If not set, Flask looks forapp.pyorwsgi.py.FLASK_DEBUG: Set to1to enable debug mode, which provides an interactive debugger and reloads the server on code changes.
export FLASK_APP=hello
export FLASK_DEBUG=1
flask run
Instance Folders
For configuration that should not be committed to version control (like secret keys), Flask supports an instance folder.
app = Flask(__name__, instance_relative_config=True)
app.config.from_pyfile("config.py", silent=True)
Verify Installation
Confirm that Flask is installed correctly by checking its version:
flask --version
This will output the versions of Python, Flask, and Werkzeug.
Next Steps
- Learn about Blueprints & Modular Design for organizing larger applications.
- Explore Initializing the Application for better testability and configuration.
- Read about Request & Response Handling and The Response Object.
- Check out the Tutorial: Managing Resources with g in the
examples/tutorialdirectory for a complete blog application.
Troubleshooting
- Command not found: If the
flaskcommand is not found, ensure your virtual environment is activated or usepython -m flask. - Address already in use: If port 5000 is occupied, you can specify a different port:
flask run --port 8080. - ImportError: If you encounter an
ImportErrorwhen runningflask run, ensureFLASK_APPis set correctly to the module containing yourFlaskinstance.