2017-01-14 26 views
1

我的瓶项目的结构如下:瓶AttributeError的:模块 '应用程序' 有没有属性 '跑'

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

run.py

from app import app 

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

This worked befo但是我试图将我的项目从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__':块产生相同的结果。什么导致这个问题?

回答

0

当导入应用程序并运行if __name__ == '__main__':中的应用程序时,摆脱.

run.py

from app import app 

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

命令行

my_project$ python run.py 

此外,如果您使用的是virtualenv确保您使用的是预期的Python:

my_project$ which python; python --version 

如果您在t周围有*.pyc个文件也可以删除这些。

+0

我试过这种办法(见我的问题的结束),并没有奏效。我得到了同样的错误:'AttributeError的:模块“应用”有没有属性“run'' – rasmi

+0

我得到'AttributeError错误的唯一方法:‘模块’对象有没有属性” run''是,当我更换'从应用程序导入'带'进口应用程序'。 – dm295

相关问题