![](/img/trans.png)
[英]AttributeError: 'module' object has no attribute 'main' for tf.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.