使用cookiecutter-flask,我创建了一个名为site
的新蓝图/子模块,它在所有相关文件,测试等的user
子模块之后建模。测试正在传递,数据库已创建,flask run
有效,但当我尝试输入flask shell
时,我得到了
AttributeError:module' webapp.site'没有属性'模型'
这里是项目结构和代码中的相关位:
---项目结构---
├── assets
├── autoapp.py
├── webapp
│ ├── __init__.py
│ ├── app.py
│ ├── public
│ │ ├── __init__.py
│ │ ├── forms.py
│ │ └── views.py
│ ├── settings.py
│ ├── site
│ │ ├── __init__.py
│ │ ├── forms.py
│ │ ├── models.py
│ │ └── views.py
│ ├── static
│ ├── templates
│ ├── user
│ │ ├── __init__.py
│ │ ├── forms.py
│ │ ├── models.py
│ │ └── views.py
│ ├── utils.py
│ └── webpack
├── tests
--- webapp/__init__.py
"""Main application package."""
--- webapp/user/__init__.py ---
from . import views
--- webapp/site/__init__.py ---
from . import views
--- webapp/app.py ---
from webapp import site, user
...
def register_shellcontext(app):
"""Register shell context objects."""
def shell_context():
"""Shell context objects."""
print(dir(site))
return {
'db': db,
'User': user.models.User,
--> 'Site': site.models.Site,
}
---错误输出--- AttributeError:module' webapp.site'没有属性'模型'
当我尝试输入flask shell
时,我收到错误输出。 user
模块工作正常,但是site
barfs。如果我打开Python REPL,我可以from webapp import site
然后site.models
就好了。我也可以将app.py
中的导入更改为from webapp.site.models import Site
并且这有效 - 但我仍然想知道为什么其他方法无法正常工作。我还尝试消除site/__init__.py
(不起作用)并将models
导入site/__init__.py
(这确实有用)。
如果我在print(dir(site))
导入后立即添加app.py
,我会看到
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'views']
我不知道这里发生了什么,为什么user
正在工作,而不是site
。