Пакет приложений 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 не является приоритетом правильная "упаковка для распространения", поскольку существуют другие инструменты.

Другие вопросы по тегам