Flask - 导入错误:没有名为app的模块
首先,我创建了一个叫做 __init__.py
的文件。
from flask import Flask
app = Flask(__name__)
然后在同一个文件夹里,我又创建了一个单独的文件,叫做 run.py
。
from app import app
app.run(
debug = True
)
当我尝试运行 run.py
的时候,出现了一个错误。
Traceback (most recent call last):
File "run.py", line 1, in <module>
from app import app
ImportError: No module named app
13 个回答
你的 __init__.py
文件需要放在名为 app 的文件夹里,而不是和 run.py 文件放在同一个目录下。
from app import app
这行代码是在找 app 文件夹里的东西,所以 __init__.py
文件必须放在那个文件夹里。
确保你把PYTHONPATH设置到src/目录。比如,你可以这样做:export PYTHONPATH="$PYTHONPATH:/path/to/your/src"
这可能是flask应用程序文件夹结构上的一个错误。
如果你是初学者,想找一个简单易懂的flask项目结构,下面的内容可能会对你有帮助:
|__movies
|__run.py
|__app
├── templates
│ └── index.html
│ └── signup.html
└── __init__.py
└── routes.py
这里的'movies'是主应用的名字。它里面有一个'run.py'文件和一个叫'app'的文件夹。
'app'文件夹里包含了所有必要的flask文件,比如'templates'文件夹、'__init__.py'和'routes.py'。
以下是各个文件的内容:
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!"
如果你还在困扰中……
我在我的IDE(VSCode)中,调试时
才会出现 No module named app
的错误,而在 运行时
却没有。
这是因为我在 app.py 的主程序中设置了 debug=True
(这会在代码更改后自动重新加载 Flask):
app.run(debug=True)
要解决这个错误,只需把它改成 False
就可以了:
app.run(debug=False)
__init__.py
是通过一个文件夹来导入的。如果你想把它当作 app
来使用,你需要把 __init__.py
文件放在一个叫做 app
的文件夹里。
更好的选择是直接把 __init__.py
改名为 app.py
。