我希望这不是重复,我找不到任何其他答案。
直截了当地说,问题如下。
我在Django有一个项目,其中django-apps使用外部自定义模块。 这是结构:
Project_dir/
- core/
- module_1.py
- module_2.py
- django_project/
- __init__.py
- settings.py
- urls.py
- wsgi.py
- django_app_A/
- views.py
- manage.py
问题是我需要在module_1中导入moudule_2的一些类和方法,我只想在module_1中这样做,
from module_2 import foo
当我运行module_1进行测试时,一切正常。尽管如此,我需要在django_app_A / views.py中导入module_1,我会这样做
from core.module_1 import Bar
问题在于:如果我在module_1中有另一个相对导入,就像我一样,我会得到一个
ModuleNotFoundError: No module named 'module_2'
除非我在module_1中使用语法
from .module_2 import foo
通过这样做,Django应用程序将正常工作,页面将正确加载,但同时我“打破”module_1,因为我将无法再独立运行它,因为我将得到一个
ModuleNotFoundError: No module named '__main__.module_2'
我不知道如何修复此冲突并使两个导入语法同时工作。 有线索吗?我错过了什么吗?
提前致谢
答案 0 :(得分:1)
你应该尽可能多地使用绝对导入。
from core.module_2 import foo
答案 1 :(得分:0)
我无法确定,但这听起来像是一个循环导入问题。
您是否需要导入到" main"水平?如果在类或函数内导入模块2,只需编写
即可def function_in_question():
import module_1
return module_1.whatever()
要寻找的另一件事:你是否以一种实际上是循环的方式使用它? module_2中的函数使用module_1中的函数,该函数使用module_2中的函数?