Как создать приложение 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.
Кроме того, я проверил эти сайты:
Ответы
Ответ 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):
- В Automator выберите File> New и выберите " Приложение" в качестве типа документа.
- Далее убедитесь, что вкладка Действия выбрана слева, а затем в поле поиска введите
run
. Среди других опций вы увидите Run Shell Script - дважды щелкните по нему, и на правой панели появится окно редактора. - В раскрывающемся меню Shell выберите /usr/bin/python.
- Вставьте свой код 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
, в соответствии с вашими требованиями, вам необходимо внести некоторые изменения.