Вопрос Есть ли способ сделать Windows-версию моих приложений python / gtk3?


Недавно я довольно быстро использовал кодирование и GTK 3. Его отличные результаты, и я доволен некоторыми результатами, но теперь хочу поделиться своими приложениями с людьми, работающими под управлением Windows или Mac. Есть ли способ сделать какой-либо установщик Windows, или мне придется держать их за руку, пытаясь установить различные библиотеки и т. Д.? Заранее спасибо.


3
2017-08-31 09:15


происхождения




ответы:


GTK3 - это бит ... Я займусь этим через секунду ...

Заключение проекта Python для Windows на самом деле довольно просто, если вы используете что-то вроде py2exe или pyinstaller, Есть также коммерческие варианты, но это было так долго, что я не могу вспомнить их имена.

В любом случае, вы закончите всю среду Python со всем, что вам нужно, испекли. Пользователь просто запускает ее.

Вернемся к набору инструментов. GTK3 может быть установлен на Windows, но это не преуспевающий или зрелый кросс-платформенный инструментарий. Есть несколько вопросов об этом на StackOverflow но я не знаю, какие привязки они предоставляют. Вероятно, они не подходят для Python, но я надеюсь, что ошибаюсь. Короче говоря, вы, вероятно, не хотите использовать GTK3 для кросс-платформенного приложения.

Прошлое, вам осталось искать альтернативу. Три популярных варианта:


6
2017-08-31 09:35



Если вы делаете все три основные платформы, PyInstaller, вероятно, лучше для вас, чем py2exe. - Oli♦
Вы получаете преимущество, чтобы сказать, что избегайте сложностей, но можно перекрестно скомпилировать gtk3 / pygi и использовать переносимый экземпляр python с встроенной оболочкой (багги, хотя) opensourcepack.blogspot.com/p/pygobject-pygi-aio.html - RobotHumans


Я добавил инструкции по созданию для win32 на странице gnome live PyGobject https://wiki.gnome.org/PyGObject#Building_on_Win32_with_cx_freeze


3
2017-08-28 03:20



Добро пожаловать в Ask Ubuntu! Хотя это теоретически может ответить на вопрос, было бы предпочтительнее чтобы включить здесь основные части ответа и предоставить ссылку для справки. - guntbert
Спасибо, поэтому вы в основном говорите мне, что это хорошая практика, чтобы дублировать ответ, поэтому, если по какой-то причине мне придется изменить страницу wiki @ live.gnome.org, я должен помнить, чтобы вернуться сюда и изменить ее также? Честно говоря, это выглядит довольно глупо для меня, точно так же, как дублирующий код. - gianmt
Нет, вы неправильно поняли - «существенные детали» не означают «дословный дубликат», но, пожалуйста, дайте обзор - мы надеемся, что и этот сайт, и ваша страница будут жить вечно, но на всякий случай ... - guntbert


Вы можете создавать пакеты .deb, где, если есть связанные с ними зависимости, они могут быть указаны, как и пакет .deb, который вы обычно устанавливаете.

Создание пакета не так просто, что вы можете научить вас здесь в 1 или 2 командах, вам нужно что-то прочитать об этом, поэтому я рекомендую вам прочитать следующее:

http://developer.ubuntu.com/packaging/html/

Основная информация с этого сайта:

Запуск пакета

bzr-builddeb включает в себя плагин для создания нового пакета из   шаблон. Плагин является оберткой вокруг команды dh_make. Вы   должны быть уже установлены, если вы установили упаковку-dev. Запустите   команда, указывающая имя пакета, номер версии и путь к   верхний архив:

$ sudo apt-get install dh-make
$ cd ..
$ bzr dh-make hello 2.7 hello-2.7.tar.gz

Когда он задает тип пакета s для одиночного двоичного кода. Это будет   импортируйте код в ветку и добавьте каталог debian / packaging.   Посмотрите содержимое. Большинство файлов, которые он добавляет, необходимы только   для специализированных пакетов (таких как модули Emacs), чтобы вы могли начать с   удаление необязательных файлов примеров:

$ cd hello/debian
$ rm *ex *EX

Теперь вы должны настроить каждый из файлов.

В debian / changelog измените номер версии на версию Ubuntu:   2.7-0ubuntu1 (версия вверх 2.7, версия Debian 0, версия Ubuntu 1). Также измените неустойчивость к текущей версии Ubuntu   таких как точные.

Большая часть работы по созданию пакета выполняется с помощью ряда сценариев   называемый debhelper. Точное поведение изменений debhelper с новыми   основные версии, файл compat указывает debhelper, какая версия   вести себя как. Обычно вы хотите установить это в самую последнюю версию   который равен 8.

элемент управления содержит все метаданные пакета. Первый абзац   описывает исходный пакет. Второй и последующие параграфы   описать создаваемые бинарные пакеты. Нам нужно будет добавить   пакеты, необходимые для компиляции приложения в Build-Depends :. Для   привет, убедитесь, что он включает по крайней мере:

Build-Depends: debhelper (> = 8.0.0) Вам также нужно будет заполнить   описание программы в поле Описание:.

авторские права должны быть заполнены, чтобы следить за лицензией восходящего потока   источник. Согласно файлу hello / COPYING это GNU GPL 3 или   позже.

docs содержит любые файлы документации вверх по течению, которые, по вашему мнению, должны быть   включены в окончательный пакет.

README.source и README.Debian нужны только в том случае, если ваш пакет   любые нестандартные функции, мы не можем их удалить.

источник / формат можно оставить как есть, это описывает формат версии   исходный пакет и должен быть 3.0 (одеяло).

правила - самый сложный файл. Это Makefile, который компилирует   кода и превращает его в двоичный пакет. К счастью, большая часть работы   автоматически выполняется в эти дни debhelper 7, поэтому универсальный%   Цель Makefile запускает сценарий dh, который будет запускать все   необходимо.

Все эти файлы более подробно описаны в обзоре   debian статьи каталога.

Наконец, передайте код в свою упаковочную ветку:

$ bzr commit -m "Initial commit of Debian packaging."

Построение пакета

Теперь нам нужно проверить, что наша упаковка успешно компилирует   пакет и создает двоичный пакет .deb:

$ bzr builddeb -- -us -uc
$ cd ../../

bzr builddeb - это команда для создания пакета в его текущем   место нахождения. -Us -uc говорит, что GPG не нужно подписать   компиляции. Результат будет размещен в ...

Вы можете просмотреть содержимое пакета с помощью:

$ lesspipe hello_2.7-0ubuntu1_amd64.deb

Установите пакет и проверьте, работает ли он:

$ sudo dpkg --install hello_2.7-0ubuntu1_amd64.deb

Следующие шаги

Даже если он создает двоичный пакет .deb, ваша упаковка может иметь   ошибок. Многие ошибки могут быть автоматически обнаружены нашим инструментом lintian   который может быть запущен как в исходном файле метаданных .dsc, так и в файле .deb   двоичный пакет:

$ lintian hello_2.7-0ubuntu1.dsc
$ lintian hello_2.7-0ubuntu1_amd64.deb

Описание каждой из проблем, о которых он сообщает, можно найти на   lintian сайт.

После исправления упаковки вы можете перестроить с помощью -nc «no   чистым "без необходимости строить с нуля:

$ bzr builddeb -- -nc

Проверяя, что пакет создается локально, вы должны обеспечить его   основывается на чистой системе с использованием pbuilder. Если вы еще не создали   pbuilder-dist, сделайте это сейчас:

$ bzr builddeb -S
$ cd ../build-area
$ pbuilder-dist precise build hello_2.7-0ubuntu1.dsc

Когда вы довольны своим пакетом, вы захотите, чтобы другие просмотрели   Это. Вы можете загрузить ветку в Launchpad для просмотра:

$ bzr push lp:~<lp-username>/+junk/hello-package

Загрузка его в PPA (Personal Package Archive) обеспечит его сборку   и дать простой способ для вас и других проверить бинарные пакеты.   Вам нужно будет настроить PPA в Launchad, а затем загрузить с dput:

$ dput ppa:<lp-username> hello_2.7-0ubuntu1.changes

0
2017-08-31 09:29



Я довольно уверен, что этот вопрос касается упаковки приложений Python + GTK3 для Windows и OSX. - Oli♦
Этот ответ настолько не по теме. Вопрос о Windows ... - Bobble


Существует инструмент py2exe который преобразует программу python в автономный исполняемый файл Windows (включая интерпретатор python), который, я думаю, является тем, что вы ищете.

Эта страница в частности упоминает упаковку приложений Gtk с помощью этого инструмента.

Я не боюсь, что с OS X не поможет.


0
2017-08-31 09:37



Примеры py2exe - все для GTK2 (PyGTK - v2 только AFAIK) - Oli♦