Flask confusion with app Flask confusion with app flask flask

Flask confusion with app


I think the main confusion is in the line:

from app import app

You have a python package (a folder with __init__.py file) named "app". From this folder, you are now importing the variable "app" that you defined below in __init__.py file:

app = Flask(__name__)

Rename the folder from app to say "myproject". Then you will call

from myproject import app

Also, you will import views as

from myproject import views


The author made his code needlessly confusing by choosing a package name that is the same as Flask's usual application object instance name. This is the one you'll be most interested in:

app = Flask(__name__)

Here is the documentation on the Flask application object:

http://flask.pocoo.org/docs/api/#application-object

To avoid confusion, I recommend using the official Flask documentation instead of that guide.


That's a bit confusing indeed, due to the poor names choice.

  • app = Flask(__name__): here app is a WSGI application, it implements the corresponding interface and also supports whatever Flask has to offer us on top of that.
  • from app import app : imports exactly that app object from the package app.
  • from app import view: For what heck he's importing views there, is a bit of a mystery, I suppose he wants to make sure that the view bindings are executed. (I'd rather do that in run.py). In any case, that's a kind of importing loop between two modules which is at least confusing as well.