Как создать приложение Mac OS X с Python?

Я хочу создать графическое приложение, которое должно работать на Windows и Mac. Для этого я выбрал Python.

Проблема в Mac OS X.

Есть два инструмента для создания «.app» для Mac: py2app и pyinstaller.

  1. py2app довольно хорош, но он добавляет исходный код в пакет. Я не хочу делиться кодом с конечными пользователями.
  2. Pyinstaller генерирует исполняемый файл UNIX, поэтому как запустить его на Mac? Я создал пакеты с этим исполняемым файлом, но результат «.app» не работает.

Вопросы:

  1. Как настроить py2app для включения исходного кода в исполняемый файл, чтобы конечные пользователи не имели доступа к моей программе?
  2. Как конвертировать исполняемый файл UNIX в Mac «.app»?
  3. Есть ли способ скомпилировать код Python с GCC?
  4. В Windows это легко, я создал «exe» файл из кода Python, и он работает. Возможно ли создать одно приложение для Mac?

PS Я использую два компьютера (Windows и для Mac), Python 2.7, wxPython, py2exe, py2app и pyinstaller.

Кроме того, я проверил эти сайты:

  • http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html
  • http://www.pyinstaller.org/export/develop/project/doc/Manual.html?format=raw
  • http://www.pyinstaller.org/wiki/Features/MacOsCompatibility
  • http://www.stackoverflow.com/questions/2933/an-executable-python-app

  • Msgstr "проблема совместимости в универсальной оболочке" в wxPython?
  • Лучший способ получить название кнопки, которая называется событием?
  • Травление объектов
  • wxPython StaticText Widget Font
  • WxPython Несовместим со снежным барсом?
  • Почему этот wxPython GUI замерзает, когда self.Destroy () используется вместо self.Close ()? (пример прилагается)
  • Как создать эффект зависания на StaticBitmap в wxpython?
  • Обратный вызов функции python из Tkinter Tcl в Windows
  • 11 Solutions collect form web for “Как создать приложение Mac OS X с Python?”

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

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

    Как конвертировать исполняемый файл UNIX в Mac «.app»?

    Что вы подразумеваете под исполняемым файлом UNIX? Бинар Дарвина (OS X) [который на самом деле не UNIX]? Это можно сделать с помощью тех инструментов, о которых вы уже упоминали, но их нужно делать осторожно, чтобы избежать зависимостей библиотек.

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

    Есть ли способ скомпилировать код Python с GCC?

    GCC не компилирует Python. Это другой язык (хотя в gcc-семействе есть инструменты, которые поддерживают несколько языковых интерфейсов, но не Python). Есть инструменты, которые пытаются перевести Python на C, а затем вы можете скомпилировать это в настоящий двоичный файл, но это работает только для программ, которые избегают определенных типов конструкций, а процесс (и ограничения) должен также применять ваши библиотеки.
    Один проект, позволяющий это Китону. Он хорошо работает для некоторых типов кода, в основном числового кода, но его нетипично установить и использовать, особенно если вы хотите создать что-то, что работает на нескольких разных компьютерах.

    В Windows это легко, я создал «exe» файл из кода Python, и он работает. Возможно ли создать одно приложение для Mac?

    Я должен сказать, что я настроен скептически, очень скептически, об этом. Как и в случае с OS X, exe почти наверняка имеет исходный код, тривиально доступный внутри него.

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

    PyInstaller автоматически создаст пакеты под Mac OSX для оконных исполняемых файлов. При запуске ypinstaller.py обязательно передайте опцию «–windowed».

    Эта функция задокументирована на веб-сайте pyinstaller

    Если вы не полностью привержены wxPython (и для тех, кто ищет кроссплатформенную платформу Python GUI), я рекомендую вам проверить Kivy . Это кросс-платформа, ускоритель графического процессора, и он сделает для вас упаковку приложений . Легко впрыгнуть, имеет продуманную архитектуру и дает невероятную гибкость в плане интерфейса. Это лучший способ, с помощью которого я нашел приложение Python для кросс-платформенной платформы.

    Выбор cxFreeze . Я использую его, чтобы упаковать мою программу python в приложение Mac OS X. Это работает как шарм.

    2: вы не можете «преобразовать» его, но вы можете переместить исполняемый файл в App.app/Contents/MacOS/something в .app-файле, а CFBundleExecutable – «что-то». Это обычно не рекомендуется.

    Automator уже упоминался как быстрое и простое решение для сценариев Pythons, которые содержатся в одном файле, но поскольку интерфейс Automator UI имеет так много опций, и неясно, как это сделать на самом деле, я предоставлю шаг за шагом, (для работы над Yosemite):

    1. В Automator выберите « Файл» > « Создать» и выберите « Приложение» в качестве типа документа.
    2. Затем убедитесь, что вкладка « Действия » выбрана слева, а затем в поле «Тип поиска» run . Среди других параметров вы увидите Run Shell Script – дважды щелкните по нему, и окно редактора появится на правой панели.
    3. В раскрывающемся меню « Shell» выберите / usr / bin / python .
    4. Вставьте свой код Python в окно редактирования и выберите « Файл» > « Сохранить» .

    По умолчанию приложение будет сохранено в $HOME/Applications и появится в Spotlight.

    Если вы хотите установить свой собственный значок и иметь некоторые причудливые функции, например значки панели задач с меню, окна журналов и т. Д., Посмотрите на Platypus и приложение с открытым исходным кодом для создания собственных пакетов MacOS.

    Мотивированный человек мог бы, вероятно, восстановить исходный код из байт-кода Python в вашем приложении, чтобы вы могли пересмотреть свою противоположность py2app. Если вы не доверяете своим конечным пользователям, почему вы с ними работаете?

    Единственный способ – py2app. У вас нет другого пути. Сожалею. Исследование, которое вы сделали, кажется очень прочным, и вы ничего не пропустили.

    Используя py2exe для пользователей Windows, чтобы им не пришлось иметь дело с версиями библиотек, я разрывал скомпилированные программы, включая файлы байт-кода python. Хотя вы можете сделать это нарушением лицензии, чтобы заглянуть внутрь, факт состоит в том, что если компьютер может их выполнить, я могу их прочитать. Можно скомпилировать программы python с помощью gcc через препроцессор C (попробуйте найти 2c.py в google), я не знаю, поддерживает ли кто-либо из них GCC. Опять же, вы не получаете никакой безопасности, используя их, но вы можете добиться значительного улучшения скорости.

    Я не пробовал это с большими проектами Python, но для моих собственных сценариев самым простым способом я нашел использование Automator

    Вы можете в интерактивном режиме создать проект приложения с помощью действия Run Shell Script , затем вставить свой скрипт в свой редактор, выбрать свою программу оболочки (/ usr / bin / python), в конечном итоге сохранить проект. И у вас есть собственное приложение для Mac.

    Automator также может управляться AppleScript. Таким образом, вы можете связать этот процесс преобразования py-2-app с вашими сценариями сборки.

    Я никогда не тестировал программу GUI, поэтому я не знаю, понравится ли вам это. Но я бы попробовал, так как вы можете задаться вопросом, насколько хорошо поддерживаются все упомянутые сторонние модули / приложения python, и как долго они будут продолжаться. Приходя в комплекте с OS X, Automator, скорее всего, останется, если Apple не станет ДЕЙСТВИТЕЛЬНО устали от этого.

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

    http://www.nooganeer.com/his/tipsandtricks/distributing-python-application-osx/

    Python - лучший язык программирования в мире.