0

使用cookiecutter-flask,我创建了一个名为的新蓝图/子模块,该模块在所有相关文件、测试等的子模块site之后建模。测试正在通过、数据库创建和工作,但是当我尝试进入时,我得到了userflask runflask shell

AttributeError:模块“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: 模块 'webapp.site' 没有属性 'models'

当我尝试输入时得到错误输出flask shell。该user模块工作正常,但site很糟糕。如果我打开 Python REPL,我可以from webapp import site然后做得site.models很好。我也可以将导入更改app.pyfrom webapp.site.models import Site并且有效 - 但我仍然想知道为什么其他方式不起作用。我也尝试过清除site/__init__.py(不起作用)并导入modelssite/__init__.py(起作用)。

如果我print(dir(site))在导入后立即添加 a app.py,我会看到

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'views']

我不知道这里发生了什么以及为什么user有效但没有site

4

0 回答 0