Приложение Python GUI распространяется - PullRequest
11 голосов
/ 30 сентября 2008

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

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

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

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

Ответы [ 7 ]

6 голосов
/ 30 сентября 2008

http://wiki.wxpython.org/CreatingStandaloneExecutables

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

6 голосов
/ 30 сентября 2008
2 голосов
/ 30 сентября 2008

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

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

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

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

Создание распространяемого в Python

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

1 голос
/ 01 октября 2008

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

Это говорит:

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

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

1 голос
/ 30 сентября 2008

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

0 голосов
/ 01 октября 2008

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

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

0 голосов
/ 30 сентября 2008

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

...