python - flask 属性错误 : module 'app' has no attribute 'run'

标签 python python-2.7 python-3.x flask python-import

我的 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')

运行.py

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 中的导入样式以匹配 here :

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__': block 中会产生相同的结果。是什么导致了这个问题?

最佳答案

我通过将 app 目录重命名为其他名称(例如 webapp)解决了这个问题。使用 from webapp import app 就可以了。这似乎是因为 package directory names take precedence over module names when importing .也许使用 __path__ 可以解决这个问题。

关于python - flask 属性错误 : module 'app' has no attribute 'run' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41656171/

相关文章:

python - 如何打印此类变量?

python - python可以读取这种类型的配置文件吗?

python - 根据描述,numpy.linalg.lstsq rcond 参数是否不起作用?

python - 如何使子图的大小相等?

python - 如何将子列表逐行写入文本文件?

python - 如何在 Python 中连续检查多个项目的条件?

python - 管理分布式集群?

python - 使用 Python 读取 RTF 文件时出现欧元符号问题

python-2.7 - 如何使用python从elasticsearach中搜索数据?

opencv - 如何从一维子阵列中选择白色像素最少和最大的子阵列?