Flask - ImportError: No module named app
First I created __init__.py
from flask import Flask
app = Flask(__name__)
Then in a separate file, in the same directory, run.py
from app import app
app.run(
debug = True
)
When I try to run run.py
, I get the error
Traceback (most recent call last):
File "run.py", line 1, in <module>
from app import app
ImportError: No module named app
__init__.py
is imported using a directory. if you want to import it as app
you should put __init__.py
file in directory named app
a better option is just to rename __init__.py
to app.py
This is probably an error in flask application's folder structure.
Anyone looking for a simple beginner-friendly structure for the flask project may find this helpful:
|__movies
|__run.py
|__app
├── templates
│ └── index.html
│ └── signup.html
└── __init__.py
└── routes.py
Here 'movies' is the name given for the main application. It contains 'run.py' and a folder called 'app'. 'app' folder contains all necessary flask files such as 'templates' folder, '__init __.py', and 'routes.py'.
Contents of:
run.py:
from app import app
__init__.py:
from flask import Flask
app = Flask(__name__)
from app import routes
app.run(debug=True)
routes.py:
from app import app
@app.route('/')
@app.route('/index')
def index():
return "Hello, World!"