У меня есть приложение Python, которое динамически загружает модули Python во время выполнения (используя __import__
). Загружаемые модули находятся в пакете с именем plugins
(т.е. подпапка с именем plugins
с __init__.py
и т. Д.). Все работает нормально, работает из интерпретатора Python и даже при компиляции в двоичный файл Windows с использованием py2exe.
Я попытался создать приложение OSX из него, но это успешно, но при запуске .app я получаю ImportError: 'no module named plugins.xxxx
'.
Я почти уверен, что дал правильные параметры py2app ('includes': [...]
, 'packages':['plugins']
, идентично тому, что я делаю для py2exe), поскольку при просмотре содержимого .app я вижу все модули плагинов в папке Contents/Resources/lib/python2.5/plugins/
.
Итак, почему приложение не может найти мои модули (должна быть какая-то проблема с путями)?
Edit:
Я нашел способ заставить его работать, но это не очень хорошее решение:
Когда я напечатал пути, которые Python ищет для модулей (используя print sys.path
), я заметил, что папка Contents/Resources/lib/python2.5/plugins/
НЕ была указана. Однако папка Contents/Resources/
есть, поэтому я переместил папку plugins
в папку Contents/Resources
. Теперь плагины найдены. Но я все еще не доволен этим уродливым ручным хакером.