Pyinstaller ModuleNotFoundError и недостающие подмодули только в Windows - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь упаковать приложение python для кроссплатформенного использования.В основном это небольшой веб-сервер (фляга) для localhost.

До сих пор у меня, с несколькими небольшими исправленными проблемами, была возможность упаковать его для Linux (Ubuntu) и OSX.Тем не менее, окна доставляют мне неприятности.Сборка идет нормально, но при запуске я получаю ModuleNotFoundError с отсутствующим модулем, являющимся основным именем моего приложения (пакет верхнего уровня).Я использую в основном одну и ту же команду сборки на обеих платформах, используя режим «одной папки» по умолчанию.

Одна очень очевидная проблема заключается в том, что в выходной папке в Linux я вижу все папки, доступные для используемых модулей, например, я вижу папки "cairo" и "psutil" и около 20другие в выходной папке.В Windows, однако, есть папки ZERO в выходной папке.Есть несколько библиотечных файлов, таких как _bz2.py и _hashlib.py, но, похоже, большая часть содержимого отсутствует.Аналогично, выходная папка в Linux составляет ~ 100 МБ, а в Windows - ~ 10 МБ.Очевидно, что некоторая большая часть программных зависимостей, по-видимому, не обнаруживается при запуске pyinstaller в Windows, но поскольку это так очевидно, я сомневаюсь, что это ошибка, я чувствую, что это может быть какая-то простая опция, которую я где-то упустил.

(Интересно, что я могу копировать папки в выходной папке из Linux в Windows, что приводит к изменению ошибки на ImportError, не может импортировать имя (неизвестное местоположение). Очевидно, что Windows не сможет прочитать некоторые из.so файлы в этих папках, поэтому я не ожидал, что это сработает)

Что я пробовал:

  • Использование режима одного файла (-F)
  • используя --hidden-import X для модуля, который, как он говорит, отсутствует

Пожалуйста, дайте мне знать, если я должен поделиться ссылкой на точные команды pyinstaller и выходные файлы в каждой ОС.Цените ваше время, чтобы прочитать мой пост.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...