Пакет приложений Mac OS X, собранный из pyinstaller, работает неправильно
Я использовал PyInstaller для сборки пакета приложений MacOS X для моего пакета python2.7. Двойной щелчок на значке приложения на мгновение выскочил в окно консоли, но сразу исчез. Однако двойной щелчок на развернутом "Contents/MacOS/ исполняемый файл" правильно отобразил ожидаемое окно.
Ниже приведен короткий экран для моего расширенного содержимого приложения. Папка Frameworks пуста, папка Resources содержит значок, а папка MacOS содержит все двоичные библиотеки и исполняемый файл (который работает нормально, как указано выше). Не уверен, поможет ли изменение info.plist или нет.
2 ответа
Вы пытались использовать -w
флаг? Из документов:
-w, --windowed, --noconsole
Используйте исполняемый файл оконной подсистемы, который в Windows не открывает консоль при запуске программы. Эта опция обязательна при создании пакета.app в Mac OS X.
Я не уверен, что это означает: "Приложение только фон = ДА"?
Я пытался воспроизвести вашу проблему с моим приложением foo и сборкой Pyinstaller... (947) (последняя версия для разработчиков). Я использовал аргументы --onefile --windowed для Pyinstaller. Я обнаружил, что в Finder, двойной щелчок по build/foo запускает консоль, а затем появляется окно приложения. При двойном щелчке по пакету build/foo.app, похоже, не запускается консоль, и появляется окно моего приложения. Другими словами, это работает для меня.
С другой стороны, я попробовал другой упаковщик: Пакеты Whitebox. При создании пакета я поместил в пакет файл pyinstaller/foo/build/foo (исполняемый файл). И т.д. "Пакеты" создали для меня файл.mpkg, который я установил. Затем, когда я вызвал свое приложение, появилась консоль и окно моего приложения. (Что нехорошо, я не хочу консоли.) Я не понимаю, какие атрибуты пакета заставляют приложение запускаться без консоли. Я не думаю, что это тот случай, когда исполняемый файл включает в себя оболочку, которая запускает консоль, это должна быть OSX, которая запускает консоль.
Вероятно, для проекта PyInstaller не является приоритетом правильная "упаковка для распространения", поскольку существуют другие инструменты.