繁体   English   中英

Flask AttributeError:模块“app”没有属性“run”

[英]Flask AttributeError: module 'app' has no attribute 'run'

我的 Flask 项目结构如下:

my_project
│
├── app
│   ├── __init__.py
│   ├── api
│   ├── static
│   └── templates
├── config.py
└── run.py

应用程序/__init__.py

from flask import Flask

app = Flask(__name__)

app.config.from_object('config')

运行文件

from app import app

app.run(
    host=app.config.get('HOST', '0.0.0.0'),
    port=app.config.get('PORT', 5000)
)

这以前有效,但我正在尝试将我的项目从 Python 2 迁移到 Python 3,并且运行python run.py不再有效。 我收到以下错误:

Traceback (most recent call last):
  File "/Users/rasmi/Projects/my_project/run.py", line 3, in <module>
    app.run(
AttributeError: module 'app' has no attribute 'run'

如果我更改run.py的导入样式以匹配此处的样式:

from .app import app

app.run(
    host=app.config.get('HOST', '0.0.0.0'),
    port=app.config.get('PORT', 5000)
)

我得到一个不同的错误:

Traceback (most recent call last):
  File "/Users/rasmi/Projects/my_project/run.py", line 1, in <module>
    from .app import app
ModuleNotFoundError: No module named '__main__.app'; '__main__' is not a package

将我的app.run()调用包装在if __name__ == '__main__':块中会产生相同的结果。 是什么导致了这个问题?

我通过将app目录重命名为其他内容(例如webapp )来解决此问题。 使用from webapp import app可以解决问题。 这似乎是因为在导入时包目录名称优先于模块名称 也许使用__path__可以解决这个问题。

我在我的应用程序中遇到了同样的问题,

import app.main.constant.constants as Constants

但后来我将上面的命令重组到下面,它对我有用。

from app.main.constant import constants as Constants

我通过在我的runserver.py这样做解决了这个问题:

from WebApp import app 
app.app.run(debug=True)

其中包的名称是 Webapp。 注意到我如何使用app两次。 此外,我的 Flask 应用程序称为app

├── WebApp
│   ├── app.py
│   ├── authentication.py
│   ├── __init__.py
│   ├── models.py
├── runserver.py

你能把你的from app import app1改成from app import *吗?

它对我有用

<code>
├── app
│   ├── __init__.py
│   ├── viewss.py
├── run.py
</code>

我试图从 run.py 中的app/init__.py导入应用app/init__.py

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM