当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《FlaskAttributeError:模块“app”没有属性“run”》经验,为你挑选了1个好方法。

我的Flask项目的结构如下:

my_project
?
??? app
?   ??? __init__.py
?   ??? api
?   ??? static
?   ??? templates
??? config.py
??? run.py

app / __ 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 
    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 
    from .app import app
ModuleNotFoundError: No module named '__main__.app'; '__main__' is not a package

将我的app.run()电话包裹在一个if __name__ == '__main__':块中会产生相同的结果。是什么导致此问题?



1> rasmi..:

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

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有