Ответ 1
http://wiki.wxpython.org/CreatingStandaloneExecutables
Он не должен быть таким большим, если вам не удастся включить отладочную сборку wx. Я, кажется, вспоминаю о 4Mb для python.dll и similair для wx.
Мне нужно разработать приложение для графического интерфейса рабочего стола небольшого размера, желательно с Python в качестве языка выбора из-за ограничений по времени.
Какие у меня есть варианты библиотеки графического интерфейса, которые позволяют мне перераспределять мое приложение автономно, предполагая, что у пользователей нет рабочей установки Python и, очевидно, нет графических интерфейсов, которые я использую?
Кроме того, как бы я собирался упаковать все в двоичные файлы разумного размера для каждой целевой ОС? (моими основными целями являются Windows и Mac OS X)
Дополнение: Я смотрел на WxPython, но я нашел много ужасных историй, связанных с упаковкой его с помощью cx_freeze и получением бинарных файлов размером 30 Мбайт +, и никаких реальных советов о том, как на самом деле делать упаковку и насколько заслуживает доверия.
http://wiki.wxpython.org/CreatingStandaloneExecutables
Он не должен быть таким большим, если вам не удастся включить отладочную сборку wx. Я, кажется, вспоминаю о 4Mb для python.dll и similair для wx.
Это может помочь:
Python имеет встроенный инструментарий GUI с именем TKinter, который основан на Tk-библиотеке с языка программирования TCL. Он очень простой и не имеет всех функций, которые вы ожидаете в Windows Forms или GTK, например, но если у вас должен быть инструментарий, независимый от платформы, я не вижу другого выбора, учитывая, что вы также не хотите вырастить так много бинарных файлов.
Tkinter совсем не сложно использовать, поскольку у него нет миллионов виджетов/элементов управления и опций, и это набор инструментов по умолчанию, включенный в большинство дистрибутивов python, по крайней мере, в Windows, OSX и Linux.
GTK и QT красивее и более мощные, но у них есть один большой недостаток для вас: они тяжелы и депонированы для третьих библиотек, особенно GTK, который имеет множество зависимостей, что затрудняет его распространение в вашем программном обеспечении.
Что касается двоичного создания, я знаю, что есть py2exe, который преобразует код python в исполняемый код win32 (.exe), но не уверен, что для OSX что-то похожее. Вы беспокоитесь, потому что люди могли видеть исходный код или просто чтобы вы могли связать все в одном пакете? Если вы просто хотите связать все, что вам не нужно, чтобы создать автономный исполняемый файл, вы можете легко создать установщик:
Создание дистрибутива в python
Это руководство по распределению вашего программного обеспечения, когда оно будет сделано.
http://Gajim.org для Windows использует python и PyGtk. Вы можете проверить, как они это сделали. Кроме того, PyQt для GUI (и wxpython, упомянутых ранее).
У меня нет опыта создания автономных приложений для любой платформы, отличной от Windows.
Это сказало:
Tkinter: отлично работает с py2exe. Python Megawidgets ( "библиотека расширений" для Tkinter) отлично работает, но он вызывает фанки с динамическим импортом, поэтому вам нужно объединить все компоненты в большой файл pmw.py и добавить его в свой проект (ну, вы также будете иметь pmwblt.py и pmwcolor.py). Существуют инструкции о том, как это сделать где-нибудь (либо на py2exe wiki, либо в документах PMW). Tix (расширение для Tk, которое вы можете использовать с Tkinter) не работает с py2exe, или, по крайней мере, это был мой опыт около четырех лет назад.
wxPython также отлично работает с py2exe. Я просто проверил приложение, которое у меня есть; весь дистрибутив составил около 11 МБ. Большинство из них были файлами wx и .pyd, но я не вижу, как вы могли этого избежать. Если вы нацелены на Windows XP, вам нужно включить манифест в ваш setup.py, иначе он будет выглядеть уродливым. Подробнее см. это письмо.
Я сам использовал py2Exe - это очень просто (по крайней мере для небольших приложений).
Комбинация, с которой я знаком: wxPython, py2exe, upx
Ключом к решению вашей последней проблемы с размером распространения является upx для сжатия DLL. Похоже, они поддерживают исполняемые файлы MacOS. Вы заплатите начальное декомпрессионное наказание, когда DLL загружаются впервые.