我有两个Python包,working
和notworking
。包working
具有以下结构和内容:
working/
__init__.py # from . import views
dialogs.py # import views
views/
__init__.py # from . import main
main.py # from .. import dialogs
包notworking
在结构和内容上是相同的,只有一个例外:它“修复”了出现在working/dialogs.py
中的非相对导入。因为我们不想意外地导入错误的views
模块,对吧
notworking/
__init__.py # from . import views
dialogs.py # from . import views # That's better! Right?
views/
__init__.py # from . import main
main.py # from .. import dialogs
通过这一“改进”,模块notworking
不再导入:
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import notworking
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "notworking/__init__.py", line 2, in <module>
from . import views
File "notworking/views/__init__.py", line 2, in <module>
from . import main
File "notworking/views/main.py", line 2, in <module>
from .. import dialogs
File "notworking/dialogs.py", line 2, in <module>
from . import views
ImportError: cannot import name views
我想找一个有知识的人来解释为什么绝对导入有效而相对导入无效
(第二,我愿意接受关于如何解决对话框和视图之间的相互依赖性的建议,正是这些建议让我一开始就陷入了这个棘手的困境。)
目前没有回答
相关问题 更多 >
编程相关推荐