Наиболее подходящий способ получить это значение - явный относительный импорт:
from . import _eggs
Однако следует помнить, что следующий вызов командной строки не будет работать:
python spam/boiler.py
Причина, по которой это не сработает, заключается в том, что интерпретатор не распознает ни один непосредственно исполняемый файл как часть пакета, поэтому относительный импорт завершится неудачей.каталог, в котором находится папка «спам», вместо этого вы можете выполнить модуль следующим образом:
python -m spam.boiler
Это дает интерпретатору достаточно информации, чтобы распознать, где boiler.py находится в иерархии модулей, и разрешить относительныйимпортирует правильно.
Это будет работать только с Python 2.6 или новее - предыдущие версии вообще не имели дело с явным относительным импортом из main .(подробности см. PEP 366 ).
Если вы просто делаете import spam.boiler
из другого файла, то это должно работать для любой версии Python, которая допускает явный относительный импорт (хотя этовозможно, для Python 2.5 может потребоваться from __future__ import absolute_imports
, чтобы правильно включить эту функцию)