Как создать приложение Mac OS X с Python? - PullRequest
32 голосов
/ 31 августа 2011

Я хочу создать приложение с графическим интерфейсом, которое должно работать на 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.

Также я проверил эти сайты:

Ответы [ 11 ]

8 голосов
/ 18 февраля 2013

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

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

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

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

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

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

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

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

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

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

6 голосов
/ 30 октября 2013

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

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

5 голосов
/ 23 февраля 2013

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

4 голосов
/ 21 мая 2013

cxFreeze был выбор. Я использую его для упаковки своей программы на Python в приложение Mac OS X. Который работает как шарм.

2 голосов
/ 26 июля 2015

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

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

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

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

1 голос
/ 17 октября 2012

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

0 голосов
/ 28 ноября 2018

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

0 голосов
/ 16 февраля 2014

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

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

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

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

0 голосов
/ 29 сентября 2012

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

0 голосов
/ 18 сентября 2012

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

...