разные результаты импорта в разных каталогах - PullRequest
4 голосов
/ 04 августа 2011

У меня есть пакет MyPak и модуль MyMod. Файлы организованы следующим образом:

somedir / MyPak / MyMod.py

в MyMod.py есть только класс, имя которого также MyMod

в каталоге somedir / MyPak , если я выполняю импорт:

import MyMod

MyMod импортирован как модуль.

Но в каталоге somedir / , если я сделаю

from MyPak import MyMod

MyMod импортирован как класс, а не как модуль. Почему это так?

1 Ответ

4 голосов
/ 04 августа 2011

Это поведение свидетельствует о том, что у вас есть файл:

somedir/MyPak/__init__.py

, в котором вы делаете следующее:

from MyMod import *

Когда вы import MyPak, он импортирует из этого __init__.py- аналогично, когда вы from MyPak import something, он попытается извлечь из пространства имен для пакета - который будет заглядывать внутрь этого __init__.py

Поскольку вы импортировали все из MyMod внутри __init__.py, теперькласс является локальным для пакета MyPak и маскирует файл MyMod.py.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...