Flask is now shipped with built-in support for Click. Click provides
Flask with enhanced and extensible command line utilities. Later in this
tutorial you will see exactly how to extend the flask
command line
interface (CLI).
A useful pattern to manage a Flask application is to install your app
following the Python Packaging Guide. Presently this involves
creating two new files; setup.py
and MANIFEST.in
in the
projects root directory. You also need to add an __init__.py
file to make the flaskr/flaskr
directory a package. After these
changes, your code structure should be:
/flaskr
/flaskr
__init__.py
/static
/templates
flaskr.py
schema.sql
setup.py
MANIFEST.in
Create the setup.py
file for flaskr
with the following content:
from setuptools import setup
setup(
name='flaskr',
packages=['flaskr'],
include_package_data=True,
install_requires=[
'flask',
],
)
When using setuptools, it is also necessary to specify any special files
that should be included in your package (in the MANIFEST.in
).
In this case, the static and templates directories need to be included,
as well as the schema.
Create the MANIFEST.in
and add the following lines:
graft flaskr/templates
graft flaskr/static
include flaskr/schema.sql
Next, to simplify locating the application, create the file,
flaskr/__init__.py
containing only the following import statement:
from .flaskr import app
This import statement brings the application instance into the top-level
of the application package. When it is time to run the application, the
Flask development server needs the location of the app instance. This
import statement simplifies the location process. Without the above
import statement, the export statement a few steps below would need to be
export FLASK_APP=flaskr.flaskr
.
At this point you should be able to install the application. As usual, it
is recommended to install your Flask application within a virtualenv.
With that said, from the flaskr/
directory, go ahead and install the
application with:
pip install --editable .
The above installation command assumes that it is run within the projects
root directory, flaskr/
. The editable
flag allows editing
source code without having to reinstall the Flask app each time you make
changes. The flaskr app is now installed in your virtualenv (see output
of pip freeze
).
With that out of the way, you should be able to start up the application.
Do this on Mac or Linux with the following commands in flaskr/
:
export FLASK_APP=flaskr
export FLASK_ENV=development
flask run
(In case you are on Windows you need to use set
instead of export
).
Exporting FLASK_ENV=development
turns on all development features
such as enabling the interactive debugger.
Never leave debug mode activated in a production system, because it will allow users to execute code on the server!
You will see a message telling you that server has started along with the address at which you can access it in a browser.
When you head over to the server in your browser, you will get a 404 error because we don’t have any views yet. That will be addressed a little later, but first, you should get the database working.
Externally Visible Server
Want your server to be publicly available? Check out the externally visible server section for more information.
Continue with Step 4: Database Connections.