Представьте структуру каталогов:
/
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.