py2app не включая pythonpath

Я пытаюсь создать приложение с помощью py2app. Я могу создать приложение, но когда я запускаю его, я получаю ImportError в консоли, ошибка импорта заключается в том, что есть No module named PythonApp, папка, в которой находится весь мой источник, расположение которой находится в моем PYTHONPATH.

Я импортировал локальные файлы, такие как from PythonApp import file, а не только import file, чтобы избежать проблем с пространством имен.

Я попытался построить его со следующим флагом python setup.py py2app --use-pythonpath, но это не имеет никакого значения.

  • Должен ли я просто изменить операторы импорта на import file?
  • Как я могу заставить py2app реализовать мой PYTHONPATH?

person GP89    schedule 20.11.2011    source источник


Ответы (1)


Если я хорошо понял вашу проблему, у вас есть следующий макет:

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().

person gyim    schedule 20.11.2011