Распространение приложения Python с графическим интерфейсом

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

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

Кроме того, как мне упаковать все в двоичные файлы разумного размера для каждой целевой ОС? (мои основные цели — Windows и Mac OS X)

Дополнение: я смотрел на WxPython, но я нашел множество ужасных историй о том, как упаковать его с помощью cx_freeze и получить бинарные файлы размером более 30 МБ, и никаких реальных советов о том, как на самом деле делать упаковку и насколько она достоверна.


person Vicent Marti    schedule 30.09.2008    source источник


Ответы (7)


http://wiki.wxpython.org/CreatingStandaloneExecutables

Он не должен быть таким большим, если только вам не удалось включить отладочную сборку wx. Кажется, я помню около 4 Мб для python.dll и аналогично для wx.

person Martin Beckett    schedule 30.09.2008

Это может помочь:

Как я могу сделать EXE-файл из программы Python?

person Gary Willoughby    schedule 30.09.2008

В Python есть встроенный инструментарий с графическим интерфейсом под названием TKinter, который основан на библиотеке Tk из языка программирования TCL. Он очень простой и не обладает всей функциональностью, которую вы ожидаете, например, от Windows Forms или GTK, но если вам нужен независимый от платформы инструментарий, я не вижу другого выбора, учитывая, что вы также не хотите так сильно увеличивать двоичный файл.

Tkinter совсем несложно использовать, так как он не имеет миллионов виджетов/элементов управления и опций и является набором инструментов по умолчанию, включенным в большинство дистрибутивов Python, по крайней мере, в Windows, OSX и Linux.

GTK и QT красивее и мощнее, но у них есть один большой недостаток: они тяжелые и зависят от сторонних библиотек, особенно от GTK, который имеет много зависимостей, что затрудняет его распространение, встроенное в ваш программное обеспечение.

Что касается создания двоичного файла, я знаю, что есть py2exe, который преобразует код python в исполняемый код win32 (.exe), но я не уверен, есть ли что-то подобное для OSX. Вы беспокоитесь, потому что люди могут видеть исходный код или просто потому, что вы можете объединить все в один пакет? Если вы просто хотите объединить все, что вам не нужно, для создания автономного исполняемого файла, вы можете легко создать установщик:

Создание дистрибутива на python

Это руководство о том, как распространять ваше программное обеспечение, когда оно будет готово.

person Gustavo Rubio    schedule 30.09.2008

http://Gajim.org для Windows использует python и PyGtk. Вы можете проверить, как они это сделали. Кроме того, есть PyQt для графического интерфейса (и упомянутый ранее wxpython).

person Kasprzol    schedule 30.09.2008

У меня нет опыта создания автономных приложений для какой-либо платформы, кроме Windows.

Это сказало:

Tkinter: отлично работает с py2exe. Python Megawidgets («библиотека расширения» для Tkinter) тоже работает нормально, но с динамическим импортом делает странные вещи, поэтому вам нужно объединить все компоненты в большой файл «pmw.py» и добавить его в свой проект (ну, у вас также будут pmwblt.py и pmwcolor.py). Где-то есть инструкции, как это сделать (либо на вики py2exe, либо в документах PMW). Tix (расширение Tk, которое можно использовать с Tkinter) не работает с py2exe, по крайней мере, так было у меня около четырех лет назад.

wxPython также отлично работает с py2exe. Я только что проверил приложение, которое у меня есть; весь дистрибутив весил около 11 МБ. В основном это были DLL-библиотеки wx и файлы .pyd, но я не понимаю, как этого избежать. Если вы нацелены на Windows XP, вам нужно включить манифест в файл setup.py, иначе он будет выглядеть некрасиво. Подробности см. в этом письме.

person John Fouhy    schedule 30.09.2008

Я сам использовал py2Exe — это очень просто (по крайней мере, для небольших приложений).

person Jon Cage    schedule 30.09.2008

Комбинация, с которой я знаком: wxPython, py2exe, upx

Ключом к решению вашей последней проблемы с размером дистрибутива является использование upx для сжатия библиотек DLL. Похоже, они поддерживают исполняемые файлы MacOS. Вы заплатите первоначальный штраф за декомпрессию при первой загрузке DLL.

person Jeremy Brown    schedule 30.09.2008