Почему «импорт модуля», а затем «из модуля импорта пакета» снова загружает модуль?

У меня есть пакет в моем PYTHONPATH, который выглядит примерно так:

package/
    __init__.py
    module.py
        print 'Loading module'

Если я запускаю Python из package / каталог (или запись другого модуля в этом каталоге) и введите

import module

, он загрузит module.py и распечатает «Загрузка модуля», как ожидалось. Однако, если я затем наберу

from package import module

, он загрузит модуль .py и снова печатает «Модуль загрузки» , чего я не ожидал. Какое объяснение этому?

Примечание: я думаю, что технически понимаю, почему Python делает это, потому что sys.modules ключ для модуля импорта - это просто «модуль» , но для из модуля импорта пакетов это «package.module» . я хочу знать, почему здесь другой ключ - почему путь к файлу не используется в качестве ключа, чтобы Python делал то, что здесь ожидается?

13
задан CharlesB 25 February 2013 в 15:15
поделиться