У меня есть пакет в PYTHONPATH, который выглядит примерно так:
package/
__init__.py
module.py
print 'Loading module'
Если я запускаю Python из каталога package/
(или записываю другой модуль в этот каталог) и набираю
import module
загружает module.py и выводит "Загрузочный модуль", как и ожидалось. Однако, если я тогда набираю
from package import module
он загружает module.py и снова печатает "Загрузочный модуль", чего я не ожидаю. Какое обоснование для этого?
Примечание. Я понимаю, что я понимаю, почему Python делает это, потому что ключ sys.modules для import module
- это просто "module"
, но для from package import module
it "package.module"
. Поэтому я предполагаю, что я хочу знать, почему ключ здесь различен - почему не имя пути к файлу, используемое в качестве ключа, так что Python делает то, что вы ожидаете здесь?