Если я хорошо понял вашу проблему, у вас есть следующий макет:
PythonApp/
__init__.py
file.py
foo.py
И вы пытаетесь импортировать модуль file
из foo.py
на from PythonApp import file
.Если это единственная причина, по которой вы хотите установить PYTHONPATH
, есть более простое решение: используйте относительный импорт :
from . import file
Вы можете использовать from .. import file
в подпакетеPythonApp
и т. Д.Таким образом, вы можете избежать конфликтов имен со стандартными модулями.
Если вам нужно взломать путь импорта по каким-то другим причинам, вы также можете установить переменную sys.path
в сценарии запуска (возможно, в py2app есть несколько опций дляэто тоже).Имейте в виду, что если вы добавите внешние каталоги в путь импорта, будет сложнее распространять комплект приложений.
Кроме того, более простое объяснение ImportError
состоит в том, что py2app не скопировал ваш пакет.в комплекте приложений.Убедитесь, что все ваши пакеты перечислены в параметре packages
setup()
.