我从绝对导入切换到相对导入,我的包不再导入

时间:2016-02-11 17:25:15

标签: python

我有两个Python包,workingnotworking。包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

我希望知识渊博的人解释为什么绝对导入有效并且相对导入不起作用。

(其次,我愿意接受有关如何解决对话框和视图之间相互依赖关系的建议,这些建议让我首先进入了这个粘性检票口。)

0 个答案:

没有答案