У меня есть "каноническая файловая структура" (я даю разумные имена, чтобы облегчить чтение):
mainpack/
  __main__.py
  __init__.py 
  - helpers/
     __init__.py
     path.py
  - network/
     __init__.py
     clientlib.py
     server.py
  - gui/
     __init__.py
     mainwindow.py
     controllers.py
В этой структуре, например, модули, содержащиеся в каждом пакете, могут иметь доступ к утилитам helpers через относительный импорт в виде:
# network/clientlib.py
from ..helpers.path import create_dir
Программа запускается "как script" с помощью файла __main__.py следующим образом:
python mainpack/
Попытка следовать PEP 366 Я ввел __main__.py следующие строки:
___package___ = "mainpack"
from .network.clientlib import helloclient 
Но при запуске:
$ python mainpack 
Traceback (most recent call last):
  File "/usr/lib/python2.6/runpy.py", line 122, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.6/runpy.py", line 34, in _run_code
    exec code in run_globals
  File "path/mainpack/__main__.py", line 2, in <module>
    from .network.clientlib import helloclient
SystemError: Parent module 'mainpack' not loaded, cannot perform relative import
Что случилось? Каков правильный способ обработки и эффективного использования относительного импорта?
Я также попытался добавить текущий каталог в PYTHONPATH, ничего не изменилось.