Представьте структуру каталогов:
/ a/ __init__.py b.py c.py c.py
Файл /a/b.py
выглядит следующим образом:
import c should_be_absolute = c
Все остальные файлы (включая __init__
) пусты.
При запуске теста script (с использованием python 2.7):
import a.b
print a.b.should_be_absolute
с PYTHONPATH=/
из пустого каталога (поэтому ничего не добавлено в PYTHONPATH
из текущего каталога) Я получаю
<module 'a.c' from '/a/c.py'>
где в соответствии с PEP 328 и утверждение import <> is always absolute
я бы ожидал:
<module 'c' from '/c.py'>
Вывод выполняется так, как ожидалось, когда я удаляю файл /a/c.py
.
Что мне не хватает? И если это правильное поведение - как импортировать модуль c
из b
(вместо a.c
)?
Update:
В соответствии с списком рассылки python dev это ошибка в документации. Импорт не по умолчанию в python27.