Flask - 导入错误:没有名为app的模块

67 投票
13 回答
212582 浏览
提问于 2025-04-18 00:18

首先,我创建了一个叫做 __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 个回答

8

你的 __init__.py 文件需要放在名为 app 的文件夹里,而不是和 run.py 文件放在同一个目录下。

from app import app 这行代码是在找 app 文件夹里的东西,所以 __init__.py 文件必须放在那个文件夹里。

11

确保你把PYTHONPATH设置到src/目录。比如,你可以这样做:export PYTHONPATH="$PYTHONPATH:/path/to/your/src"

19

这可能是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!"
38

如果你还在困扰中……

我在我的IDE(VSCode)中,调试时才会出现 No module named app 的错误,而在 运行时却没有。

这是因为我在 app.py 的主程序中设置了 debug=True(这会在代码更改后自动重新加载 Flask):

app.run(debug=True)

要解决这个错误,只需把它改成 False 就可以了:

app.run(debug=False)

51

__init__.py 是通过一个文件夹来导入的。如果你想把它当作 app 来使用,你需要把 __init__.py 文件放在一个叫做 app 的文件夹里。

更好的选择是直接把 __init__.py 改名为 app.py

撰写回答