Как правило, пакеты приложений OS X не предназначены для запуска из командной строки и передачи аргументов из командной строки (как вы заметили, OS X 10.6 добавила некоторую поддержку для этого).Стандартный механизм передачи файлов в приложение - Apple Events ;это используется для команды Finder Open
файла документа с типом, обрабатываемым приложением, или когда файл сбрасывается на значке приложения в Dock.py2app
предназначен для упаковки приложений, которые будут использоваться как стандартные приложения Mac GUI, в частности, с использованием протокола запуска и получения файлов через Apple Events.Он не предназначен для создания утилит командной строки.Если последнее - это то, что вы упаковываете, просто используйте обычный способ упаковки Distutils .Или, если ваш сценарий состоит только из одного файла, вы можете сделать его автономным сценарием shebang, как описано здесь .
Также обратите внимание, что при работе в ОС необходимо работать как полноценное приложение.X, чтобы использовать определенные интерфейсы GUI, сам Python на OS X обычно устанавливается в рамках и запускается из пакета Python.app
, установленного внутри структуры.(Это верно для питонов, поставляемых Apple, тех, которые установлены python.org
установщиками, и MacPorts
установленных питонов.) Когда скрипты запускаются одним из этих framework Pythons, они распознаются как приложения с графическим интерфейсомOS X без необходимости создавать собственные пакеты приложений.