Я столкнулся с очень конкретным c случаем, когда я не могу объяснить, почему импорт python делает то, что он делает, и я надеюсь, что вы мне поможете. Настройка выглядит следующим образом:
root/
├── main.py
└── pack/
├── __init__.py
├── db.py
└── plugins/
├── __init__.py
└── plug1/
├── __init__.py
└── db.py
Все файлы в дереве выше пусты, кроме root/pack/plugins/plug1/__init__.py
, который имеет следующее содержимое:
from pack.plugins.plug1 import db as plugin_db
from pack import db
и main.py
со следующими content:
import pack.plugins.plug1.db as plug_db
import pack.db as pack_db
print(pack_db.__file__)
print(plug_db.__file__)
При запуске main.py
выходные данные операторов вывода выглядят так:
.../root/pack/db.py
.../root/pack/db.py
, что означает, что импортированный модуль точно такой же.
Мои вопросы являются:
- Почему импортированные модули одинаковы?
- Почему изменение
from pack import db
на from pack import db as pack_db
решает проблему?