Подтвердить что ты не робот

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

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

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

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

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

Вопросы:

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

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

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

4b9b3361

Ответ 1

Как настроить 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 почти наверняка имеет исходный код, тривиально доступный внутри него.

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

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

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

Ответ 10

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

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

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

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

Ответ 11

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

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

Ответ 12

cxFreeze - лучшее доступное решение: сначала создайте свою программу или приложение, используя python, а затем создайте файл установки для своего приложения, а затем создайте приложение, используя команду build python setup.py build, в соответствии с вашими требованиями, вам необходимо внести некоторые изменения.