我有以下应用程序结构
/application
app.py
/decorators
queryAccessory.py
/auth
__init__.py
dao.py
/controllers
login.py
register.py
/models
user.py
get_user_response.py
/tests
__init__.py
dao.py
/controllers
get_tests.py
/models
test.py
get_tests_response.py
蓝图在auth和tests包的init.py文件中声明。在
^{pr2}$在测试中/init.py as
from flask import Blueprint, request
tayyariTests = Blueprint('tayyariTests', __name__)
from tests.controllers import get_tests
两份蓝图都登记在应用程序副本. 问题是当init.py文件的末尾都有导入时,应用程序不会启动。 如果我从任何1个文件中删除最后的导入行,应用程序就会启动,注册的蓝图就可以正常工作了。但是,当导入同时存在于init.py文件时,我会得到以下错误
File "app.py", line 8, in <module>
from auth import tayyariAuth
File "/Users/anuragjoshi/Work/Tayyari/tayyari/tayyari-rest/auth/__init__.py", line 5, in <module>
from auth.controllers import register
File "/Users/anuragjoshi/Work/Tayyari/tayyari/tayyari-rest/auth/controllers/register.py", line 1, in <module>
from auth import tayyariAuth, dao
File "/Users/anuragjoshi/Work/Tayyari/tayyari/tayyari-rest/auth/dao.py", line 1, in <module>
from decorators.queryAccessor import Query
File "/Users/anuragjoshi/Work/Tayyari/tayyari/tayyari-rest/decorators/queryAccessor.py", line 1, in <module>
from app import session
File "/Users/anuragjoshi/Work/Tayyari/tayyari/tayyari-rest/app.py", line 9, in <module>
from tests import tayyariTests
File "/Users/anuragjoshi/Work/Tayyari/tayyari/tayyari-rest/tests/__init__.py", line 5, in <module>
from tests.controllers import get_tests
File "/Users/anuragjoshi/Work/Tayyari/tayyari/tayyari-rest/tests/controllers/get_tests.py", line 1, in <module>
from tests import tayyariTests, request, dao, TayyariEncoder
File "/Users/anuragjoshi/Work/Tayyari/tayyari/tayyari-rest/tests/dao.py", line 1, in <module>
from decorators.queryAccessor import Query
ImportError: cannot import name 'Query' from 'decorators.queryAccessor' (/Users/anuragjoshi/Work/Tayyari/tayyari/tayyari-rest/decorators/queryAccessor.py)
请帮助我了解这里发生了什么,以及如何避免这种情况。在
提前谢谢。在
似乎模块
decorators.queryAccessor
不在python路径中。 你怎么把这些蓝图引进来的?我通常有一个工厂方法来创建应用程序。在这种方法中,我有如下导入来避免循环引用:问题是因为@j2logo正确地指出了一个循环导入。但是,问题不是
decorators.queryAccessor
不在python路径上。在decorators.queryAccessor
文件中的第一行是在我的
^{pr2}$app.py
中,我调用了包含我的蓝图的包的导入。在上面的问题给出了这些包中的init.py文件。由于在这些init.py文件的末尾导入了login、register和get_tests模块,这些模块依次导入了各自包中的
dao.py
模块,而这些模块又被导入了decorators.queryAccessor
。在所以环形路径是
为了解决这个问题,我去掉了逻辑,将数据库初始化到另一个文件中数据库同级应用程序副本并通过导入创建所需的会话变量数据库在任何事情之前。 这为}导入了会话,从而中断了循环导入。在
decorators.queryAccessor
文件创建了所需的会话对象,我从db.py
而不是{相关问题 更多 >
编程相关推荐