Django应用程序和子模块名称冲突

时间:2014-06-03 22:37:41

标签: python django python-2.7 python-import django-1.6

项目中的模块名称相同,都放在不同的应用程序中。

特别是有两个应用程序冲突并导致ImportError。项目结构大致如下。

project
 |_ project   
   |_ settings.py
   |_ ...
 |_ apps
   |_ A
     |_ handlers
       |_ B.py
       |_ C.py
   |_ B
     |_ models.py

设置文件将apps目录添加到系统路径。

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.insert(0, os.path.join(BASE_DIR, "apps"))

此配置假设我导入B.models时会使用apps/B/models.py。虽然C.py文件中的以下行引入导入错误,因为它导入了没有A/handlers/B.py模块的models

A/handlers/C.py:
    from B.models import BModel

sys.path变量有正确的项目,即列表中的第一个是/path/to/project/appssys.modules['B.models']被引用到正确的文件。

顺便说一句,当我使用Django的import_by_path函数时,一切正常。

如何在不重命名模块的情况下解决问题的任何想法?

提前致谢!

更新

在GitHub上发布sample sources

0 个答案:

没有答案