我坚持使用进口,不知道如何解决这个问题。
我有3个模块:
test_project.py
modules/__init__.py
r.py
module.py
module_configuration.py
依赖项列表:
test_project.py IMPORTS modules/__init__.py
modules/__init__.py IMPORTS r.py
r.py IMPORTS > module_configuration.py
module_configuration.py IMPORTS > modules/__init__.py
你可以看到,我们在这里有一个循环导入。
modules/__init__.py
保留了类定义(类似R的类)。 R
类在其构造函数ModuleConfiguration
需要来自modules/__init__.py
的字典。我收到错误消息:
ERROR: controller.test_project (unittest.loader.ModuleImportFailure)
----------------------------------------------------------------------
ImportError: Failed to import test module: controller.test_project
Traceback (most recent call last):
File "/usr/lib/python2.7/unittest/loader.py", line 252, in _find_tests
module = self._get_module_from_name(name)
File "/usr/lib/python2.7/unittest/loader.py", line 230, in
_get_module_from_name__import__(name)
File "/media/103AEB9B3AEB7C5A/Projekty/c/svn/tests/controller/test_project.py",
line 9, in <module>
from c.core.modules import MODULES
File "/media/103AEB9B3AEB7C5A/Projekty/c/svn/tests/../c/core/modules/__init__.py", line 5, in <module>
from R import R
File "/media/103AEB9B3AEB7C5A/Projekty/c/svn/tests/../c/core/modules/R.py", line 6, in <module>
from c.core.module import Module
File "/media/103AEB9B3AEB7C5A/Projekty/c/svn/tests/../c/core/module.py", line 13, in <module>
from c.core.module_configuration import ModuleConfiguration
File "/media/103AEB9B3AEB7C5A/Projekty/c/svn/tests/../c/core/module_configuration.py", line 7, in <module>
from c.core.modules import MODULES
ImportError: cannot import name MODULES
关于如何解决它的任何想法?
答案 0 :(得分:1)
不是在模块加载时制作实例,而是实现返回相关结果的函数,并将这些函数保存在各自的模块中。然后,一旦模块加载,所有人都可以使用。 从moduleB导入moduleA和从moduleA导入moduleB没有任何问题。 您是否需要必须在模块加载时创建的模块全局对象?通常不需要这样做。相反,尝试构建所有模块到位后首次使用所需的模块全局变量。