Python Django应用程序与子模块名称冲突
我在项目中有同名的模块,都放在不同的应用程序中 特别是有两个应用程序冲突并导致严重的恐怖。项目结构大致如下Python Django应用程序与子模块名称冲突,python,django,python-2.7,python-import,django-1.6,Python,Django,Python 2.7,Python Import,Django 1.6,我在项目中有同名的模块,都放在不同的应用程序中 特别是有两个应用程序冲突并导致严重的恐怖。项目结构大致如下 project |_ project |_ settings.py |_ ... |_ apps |_ A |_ handlers |_ B.py |_ C.py |_ B |_ models.py 设置文件将apps目录添加到系统路径 BASE_DIR = os.path.dirname(os.path.
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
模块时引发导入错误
A/handlers/C.py:
from B.models import BModel
sys.path
变量具有正确的项,即列表中的第一个项是/path/to/project/apps
,并且sys.modules['B.models']
引用了正确的文件
顺便说一句,当我使用Django的import\u by\u path
函数时,一切正常
你知道我如何在不重命名模块的情况下解决这个问题吗
提前谢谢
更新
发布在GitHub上。很抱歉我误解了,这就是为什么删除我的答案。避免此问题的一种方法是按如下顺序排序:可以将python作为脚本语言使用from a.b.c import d\from a.c import f
。除此之外,我不知道如何解决它。可能的重复