Flask shell没有找到目录的子模块,引发了AttributeError

时间:2018-03-28 15:50:18

标签: python flask cookiecutter

使用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

0 个答案:

没有答案