[Solved] 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
Solution #1:
__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
Solution #2:
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!"
Solution #3:
Your __init__.py
file needs to go in the folder named app, not the same directory as the run.py file.
from app import app
is looking in the app folder, so the __init__.py
file needs to sit in there.
Solution #4:
Ensure to set your PYTHONPATH to the src/ directory as well. Example
export PYTHONPATH="$PYTHONPATH:/path/to/your/src"
Solution #5:
Just rename your file to app.py and it will works.
Solution #6:
For me, export PYTHONPATH=/path/to/your/src && python app/main.py
works
Solution #7:
I solved this as follows –
$export FLASK_APP=run
$flask run
After executing this command. I don’t get any error, my app running smoothly.