py2app не включая pythonpath - PullRequest
       6

py2app не включая pythonpath

1 голос
/ 20 ноября 2011

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

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

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

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

1 Ответ

1 голос
/ 21 ноября 2011

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

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

...