Если у вас есть __init__.py
файлы в каждом из этих подкаталогов, тогда все операторы импорта должны работать правильно.
Предполагая, что это не проблема, вот отличное руководство по импорту лучших практик:
http://blog.habnab.it/blog/2013/07/21/python-packages-and-you/
Таким образом, никогда не используйте относительный импорт - всегда абсолютный (см. Ссылку выше, почему).
Во-вторых (и я не совсем уверен, почему), всегда храните ваш скрипт py2exe setup.py в той папке, где находится ваш основной скрипт.Я попытался изменить опцию 'script' в py2exe, чтобы мой скрипт находился где-то еще ... но ваша точная проблема произошла со мной.Поэтому убедитесь, что он находится там, где находится основной скрипт.
Наконец, вы всегда можете немного помочь py2exe.Я обычно должен добавить корневой каталог к системному пути, чтобы операторы импорта были действительными.Обратите внимание, я не изменяю sys.path
в любом кода моего приложения - только сценарий py2exe, который я использую для сборки exe.
В верхней части моего сценария установки py2exe:
import sys
sys.path.append(PATH_WHERE_PACKAGES_ARE)
# add any packages that need explicit importing here located in root directory:
import package1 # apparently it wasn't found...
import package2 # apparently same thing
Обычно я не импортирую пакеты, но обычно достаточно добавить корень проекта, где они существуют.