我有一个具有以下目录结构的项目:
prj
|--- app_a
|--- app_b
|---- app_a
在app_b中我有一个tests.py模块,我定义了测试。到目前为止一直很好,问题是我需要评估import app_a
并获得prj.app_a但我得到了prj.app_b.app_a。我尝试使用相对导入只是为了尝试解决方法,我得到:
ValueError:尝试相对导入超出toplevel包
是否可以在不重命名任何目录的情况下解决此问题?
答案 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
访问另一个。