|
|
@ -1,7 +1,7 @@ |
|
|
|
.. _tutorial-setuptools: |
|
|
|
.. _tutorial-packaging: |
|
|
|
|
|
|
|
|
|
|
|
Step 3: Installing flaskr with setuptools |
|
|
|
Step 3: Installing flaskr as a Package |
|
|
|
========================================= |
|
|
|
====================================== |
|
|
|
|
|
|
|
|
|
|
|
Flask is now shipped with built-in support for `Click`_. Click provides |
|
|
|
Flask is now shipped with built-in support for `Click`_. Click provides |
|
|
|
Flask with enhanced and extensible command line utilities. Later in this |
|
|
|
Flask with enhanced and extensible command line utilities. Later in this |
|
|
@ -9,17 +9,21 @@ tutorial you will see exactly how to extend the ``flask`` command line |
|
|
|
interface (CLI). |
|
|
|
interface (CLI). |
|
|
|
|
|
|
|
|
|
|
|
A useful pattern to manage a Flask application is to install your app |
|
|
|
A useful pattern to manage a Flask application is to install your app |
|
|
|
using `setuptools`_. This involves creating a :file:`setup.py` |
|
|
|
following the `Python Packaging Guide`_. Presently this involves |
|
|
|
in the projects root directory. You also need to add an empty |
|
|
|
creating two new files; :file:`setup.py` and :file:`MANIFEST.in` in the |
|
|
|
:file:`__init__.py` file to make the :file:`flaskr/flaskr` directory |
|
|
|
projects root directory. You also need to add an :file:`__init__.py` |
|
|
|
a package. The code structure at this point should be:: |
|
|
|
file to make the :file:`flaskr/flaskr` directory a package. After these |
|
|
|
|
|
|
|
changes, your code structure should be:: |
|
|
|
|
|
|
|
|
|
|
|
/flaskr |
|
|
|
/flaskr |
|
|
|
/flaskr |
|
|
|
/flaskr |
|
|
|
__init__.py |
|
|
|
__init__.py |
|
|
|
/static |
|
|
|
/static |
|
|
|
/templates |
|
|
|
/templates |
|
|
|
|
|
|
|
flaskr.py |
|
|
|
|
|
|
|
schema.sql |
|
|
|
setup.py |
|
|
|
setup.py |
|
|
|
|
|
|
|
MANIFEST.in |
|
|
|
|
|
|
|
|
|
|
|
The content of the ``setup.py`` file for ``flaskr`` is: |
|
|
|
The content of the ``setup.py`` file for ``flaskr`` is: |
|
|
|
|
|
|
|
|
|
|
@ -46,22 +50,37 @@ following lines:: |
|
|
|
graft flaskr/static |
|
|
|
graft flaskr/static |
|
|
|
include flaskr/schema.sql |
|
|
|
include flaskr/schema.sql |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
To simplify locating the application, add the following import statement |
|
|
|
|
|
|
|
into this file, :file:`flaskr/__init__.py`: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.. sourcecode:: python |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 it 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 |
|
|
|
At this point you should be able to install the application. As usual, it |
|
|
|
is recommended to install your Flask application within a `virtualenv`_. |
|
|
|
is recommended to install your Flask application within a `virtualenv`_. |
|
|
|
With that said, go ahead and install the application with:: |
|
|
|
With that said, go ahead and install the application with:: |
|
|
|
|
|
|
|
|
|
|
|
pip install --editable . |
|
|
|
pip install --editable . |
|
|
|
|
|
|
|
|
|
|
|
.. note:: The above installation command assumes that it is run within the |
|
|
|
The above installation command assumes that it is run within the projects |
|
|
|
projects root directory, `flaskr/`. Also, the `editable` flag allows |
|
|
|
root directory, `flaskr/`. The `editable` flag allows editing |
|
|
|
editing source code without having to reinstall the Flask app each time |
|
|
|
source code without having to reinstall the Flask app each time you make |
|
|
|
you make changes. |
|
|
|
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. |
|
|
|
With that out of the way, you should be able to start up the application. |
|
|
|
Do this with the following commands:: |
|
|
|
Do this with the following commands:: |
|
|
|
|
|
|
|
|
|
|
|
export FLASK_APP=flaskr.flaskr |
|
|
|
export FLASK_APP=flaskr |
|
|
|
export FLASK_DEBUG=1 |
|
|
|
export FLASK_DEBUG=true |
|
|
|
flask run |
|
|
|
flask run |
|
|
|
|
|
|
|
|
|
|
|
(In case you are on Windows you need to use `set` instead of `export`). |
|
|
|
(In case you are on Windows you need to use `set` instead of `export`). |
|
|
@ -85,5 +104,5 @@ but first, you should get the database working. |
|
|
|
Continue with :ref:`tutorial-dbcon`. |
|
|
|
Continue with :ref:`tutorial-dbcon`. |
|
|
|
|
|
|
|
|
|
|
|
.. _Click: http://click.pocoo.org |
|
|
|
.. _Click: http://click.pocoo.org |
|
|
|
.. _setuptools: https://setuptools.readthedocs.io |
|
|
|
.. _Python Packaging Guide: https://packaging.python.org |
|
|
|
.. _virtualenv: https://virtualenv.pypa.io |
|
|
|
.. _virtualenv: https://virtualenv.pypa.io |