0

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

特别是有两个应用程序发生冲突并导致 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.pymodels

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

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

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

有什么想法可以在不重命名模块的情况下解决问题吗?

提前致谢!

更新

在 GitHub 上发布示例源。

4

0 回答 0