Приложение MacOS не запускается при двойном щелчке, но запускается с терминала

Я написал скрипт Python (GUI), для которого требуется один внешний файл и один модуль (в папке). Чтобы упаковать этот сценарий для распространения среди других, я использую следующую файловую структуру приложения:

└── Contents
    ├── Info.plist
    └── MacOS
        ├── colors.py
        ├── MainScript.py
        └── <module>
            ├── <module files>

Info.plist выглядит так:

<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleExecutable</key>
    <string>MainScript.py</string>
</dict>
</plist>

MainScript.py начинается с #!/usr/bin/env python3расширения chmod +x.

Когда я дважды щелкаю приложение .app, оно на мгновение появляется в доке, а затем исчезает. Странная часть заключается в том, что open MyApp.appон работает правильно в прилагаемой папке (а также ./MainScript.py в папке MacOS). Что я делаю не так?

Добро пожаловать в Ask Different. Упаковка — это несколько сложная ситуация в macOS, поэтому в целом она здесь в теме, если это может сделать системный администратор или мотивированное писание. Я перенес ваш другой вопрос на SO, так как это действительно программирование в качестве основного. Спасибо, что задали подробный / хорошо документированный вопрос. Обязательно прочитайте справочный центр и спросите разные метаданные , если у вас возникнет соблазн спросить о ресурсах за пределами сайта (например, о хороших книгах по упаковке и т. д.) — они будут закрыты, если они не соответствуют стандартам сообщества. за полезную рекомендацию. Это нормально, так что +1

Ответы (1)

Я бы попробовал использовать такой инструмент, как Platypus, для помощи в сборке пакета приложений.

Возможно, было бы проще определить, какая часть ошибок журнала консоли имеет значение, если вы можете сравнить созданный вручную пакет приложений и сравнить его с тем, который инструмент собирает для вас.