2014-11-04 216 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