Каков правильный способ создания замороженных двоичных файлов Python для OSX, которые могут принимать аргументы?

Я сделал пакет .app из скрипта python, используя py2app. Проблема двоякая:

  1. Эмуляция аргументов не работает правильно, потому что она не принимает аргументы, которые работают в исходном скрипте Python.

  2. Формат пакета .app должен быть открыт с помощью «open». «open» поддерживает передачу аргументов только из OSX 10.6 и выше, и мне нужна поддержка более ранних версий OSX.

Каков правильный способ сделать замороженный двоичный файл для OSX, который может принимать аргументы командной строки?


person Ian M.    schedule 03.01.2011    source источник
comment
Есть ли причина, по которой вам нужен пакет приложений для утилиты командной строки? Если да, расширьте свой вопрос, чтобы объяснить вариант использования.   -  person Ned Deily    schedule 03.01.2011
comment
Нед, не надо. На самом деле это просто простая утилита командной строки.   -  person Ian M.    schedule 03.01.2011
comment
ХОРОШО. Задавая вопросы на StackOverflow, если ответ удовлетворительный, вы должны пометить ответ как принятый; в противном случае уточняйте вопрос, пока не получите удовлетворительный ответ. Так зарабатываются очки репутации.   -  person Ned Deily    schedule 04.01.2011


Ответы (2)


Как правило, пакеты приложений OS X не предназначены для запуска из командной строки и передачи аргументов из командной строки (как вы заметили, OS X 10.6 добавила некоторую поддержку для этого). Стандартный механизм передачи файлов в приложение — через События Apple; это используется для команды Finder Open файла документа с типом, обрабатываемым приложением, или когда файл перетаскивается на значок приложения в Dock. py2app предназначен для упаковки приложений, которые будут использоваться как стандартные приложения с графическим интерфейсом Mac, в частности, с использованием протокола запуска и получения файлов через Apple Events. Он не предназначен для создания утилит командной строки. Если вы упаковываете последнее, просто используйте обычный метод упаковки Distutils. Или, если ваш скрипт состоит только из одного файла, вы можете сделать его автономным скриптом shebang, как описано здесь.

Также обратите внимание, что хотя запуск полноценного приложения необходим в OS X для использования определенных интерфейсов графического интерфейса, сам Python в OS X обычно устанавливается в фреймворке и запускается из пакета Python.app, установленного внутри фреймворка. (Это относится к Python, поставляемым Apple, установленным python.org установщиками и MacPorts установленным Python.) Когда скрипты запускаются одним из этих framework Python, они распознаются OS X как приложения с графическим интерфейсом. без необходимости создавать собственные пакеты приложений.

person Ned Deily    schedule 03.01.2011

Используйте pyinstaller, он может легко создавать Linux-подобные бинарные исполняемые файлы командной строки для OS X. Он также может делать это для Linux и ОС Windows.

Я использовал как py2app, так и pyinstaller для создания исполняемых файлов OS X, и, на мой взгляд, pyinstaller лучше и проще в настройке. Однако py2app также может обрабатывать аргументы, даже создавая пакеты приложений. Так что думаю, что у вас просто неправильные настройки здания.

person Mikhail Churbanov    schedule 18.01.2011