在Django中导入模块名称冲突

时间:2014-11-04 03:36:54

标签: python django

我有一个具有以下目录结构的项目:

prj 
|--- app_a
|--- app_b
       |---- app_a

在app_b中我有一个tests.py模块,我定义了测试。到目前为止一直很好,问题是我需要评估import app_a并获得prj.app_a但我得到了prj.app_b.app_a。我尝试使用相对导入只是为了尝试解决方法,我得到:

  

ValueError:尝试相对导入超出toplevel包

是否可以在不重命名任何目录的情况下解决此问题?

1 个答案:

答案 0 :(得分:3)

这听起来像你在Python 2上;在Python 3中,绝对和相对导入之间的歧义得到了解决 - 有关详细信息,请参阅PEP 328

您可以使用from __future__ import absolute_import在Python 2中实现相同的功能。完成后,import app_a将是绝对导入,并将引用顶级包。然后,您可以使用绝对from app_b import app_a或相对from . import app_a访问另一个。