2014-11-04 166 views
1

我有一个项目具有以下目录结构:导入模块名称冲突在Django

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

里面APP_B我有一个tests.py模块,我定义的测试。到目前为止这么好,问题是我需要评估import app_a并获得prj.app_a,但是我得到的是prj.app_b.app_a。我试图用相对进口只是为了尝试作为一种变通方法,我也得到:

ValueError: Attempted relative import beyond toplevel package

是否有可能解决这一问题,但不重命名任何目录?

回答

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访问另一个。

+0

你是对的,非常感谢你的回答,也为了提高这个问题的英语语法。发布问题之前,我尝试使用__future__,但我得到了一个我误解的错误。 – RobertoAllende 2014-11-04 18:15:32