我有两个模块相互导入一些内容:
project/urls.py
:
from modules.helpers import helper
urlpatterns = [
# patterns
]
modules/helpers.py
:
def helper():
# some magic
def main():
from project.urls import urlpatterns
# process urlpatterns
modules/__init__.py
:
from modules.helpers import main
main()
有一切正常,直到我将
from project.urls import urlpatterns
这行代码进行如下包装: And everything works fine
def main():
try:
from project.urls import urlpatterns
except Exception as e:
print(str(e))
它会打印:
无法从部分初始化的模块“urls”中导入名称“urlpatterns”(很可能是由于循环导入而导致)(/Users/MaxCore/Documents/www/project/project/urls.py)
可能的原因是什么?
编辑
在最小可重现示例中,一切都正常工作,可能的异常与django有关。由于尝试捕获块,导入顺序发生了变化。
如果我在settings.INSTALLED_APPS
中指定modules
(不需要),并且运行runserver
,它将打印:
django.core.exceptions.AppRegistryNotReady:应用程序尚未加载。
# some magic
等内容以使其运行并添加一个调用main
的顶级脚本,且代码量最少? - mkrieger1