Flask - ImportError:没有名为app的模块

one*_*ece 30 python python-import

首先我创造了 __init__.py

from flask import Flask

app = Flask(__name__)
Run Code Online (Sandbox Code Playgroud)

然后在一个单独的文件中,在同一目录中 run.py

from app import app 

app.run(
    debug = True
)
Run Code Online (Sandbox Code Playgroud)

当我尝试运行时run.py,我收到错误

Traceback (most recent call last):
  File "run.py", line 1, in <module>
    from app import app 
ImportError: No module named app
Run Code Online (Sandbox Code Playgroud)

d-_*_*_-b 37

如果你仍然被困住..

我仅在 IDE (VSCode) 中的Debugging 期间收到No module named app错误,而不是 Running 期间收到错误

那是因为我在 app.py 的 __main__ 中设置了debug=True(在代码更改后自动重新加载烧瓶):

应用程序运行(调试=真)

要修复该错误,只需将其设置为False

应用程序运行(调试=假)

  • 谢谢。使用 PyCharm 确实不是那么直观。 (3认同)
  • 你救了我的命!使用 VSCode 调试模式时可以使用 `debug=True` 的替代方案吗? (2认同)

Eli*_*sha 25

__init__.py是使用目录导入的.如果你想导入它,app你应该将__init__.py文件放在名为的目录中app

更好的选择是只重命名__init__.pyapp.py

  • 我将目录重命名为'app',仍然得到相同的错误 (5认同)
  • 不要重命名,添加一个新文件并将此文件放在那里。(问题是因为 `run.py` 也在目录中) (2认同)
  • 最好重命名.`__init __.py`适用于您希望包含多个文件的目录为一个包的情况. (2认同)

Nuh*_*man 13

这可能是 Flask 应用程序文件夹结构中的错误。
任何为烧瓶项目寻找简单的初学者友好结构的人都会发现这很有帮助:

   |__movies 
     |__run.py 
     |__app     
        ??? templates
        ?   ??? index.html
        ?   ??? signup.html
        ??? __init__.py
        ??? routes.py
Run Code Online (Sandbox Code Playgroud)

这里的“电影”是主应用程序的名称。它包含“ run.py ”和一个名为“ app ”的文件夹。“应用程序”文件夹包含所有必要的文件烧瓶诸如“模板”文件夹,“ __init __.py ”和“ routes.py ”。

内容:

运行.py

from app import app
Run Code Online (Sandbox Code Playgroud)

__init__.py

from flask import Flask

app = Flask(__name__)

from app import routes


app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

路线.py

from app import app

@app.route('/')
@app.route('/index')
def index():
    return "Hello, World!"
Run Code Online (Sandbox Code Playgroud)


Tak*_*son 6

您的__init__.py文件需要放在名为app的文件夹中,而不是与run.py文件相同的目录.

from app import app正在寻找app文件夹,所以__init__.py文件需要坐在那里.


小智 5

确保将您的 PYTHONPATH 也设置为 src/ 目录。例子 export PYTHONPATH="$PYTHONPATH:/path/to/your/src"


小智 5

只需将文件重命名为 app.py 即可。