Upload
it-
View
189
Download
2
Embed Size (px)
DESCRIPTION
Владимир Яковлев - Python Developer / Odesk / Россия, Санкт-Петербург - выбор фреймворка: TkInter/PySide/PyQt/PyGI; - что делать если не хватает одного потока; - взаимодействие с системой и другими приложениями; - сборка и публикация пакетов. http://www.it-sobytie.ru/events/2040
Citation preview
Разработка desktop приложений для linuxна pythonВладимир Яковлев[email protected]
Кто я?Python developer на odesk.Основатель открытых проектов:
● series_list (python, PySide);● everpad (python, PySide);● coviolations.io (python, django, gevent);● django-bower (python, django);● subman.io (clojure).
http://github.com/nvbn/
Основные моментыОбзор gui фреймворков:
● TkInter;● PyQt/PySide;● PyGI (gtk).
Что делать, если не хватает одного потока?Взаимодействие с окружением.Сборка и публикация пакетов.
Обзор gui фреймворковTkInterВходит в стандартную библиотеку:
Обзор gui фреймворковTkInterPythonic:
Обзор gui фреймворковTkInterНе нативно выглядит:
Обзор gui фреймворковPyQt vs PySidePyQt:
● поддерживает Qt 5;● лицензия - GPL.
PySide:● только Qt 4;● лицензия - LGPL.
Обзор gui фреймворковPySideQtDesigner - можно легко и быстро сделать интерфейс.
Хорошая документация с примерами.
Обзор gui фреймворковPySideВезде нативный внешний вид:
Обзор gui фреймворковPySideWebKit, Phonon и другие батарейки:
Обзор gui фреймворковPySideНе pythonic:
Обзор gui фреймворковPyGI (gtk)Нативный внешний вид в linux:
Обзор gui фреймворковPyGI (gtk)Pythonic:
Обзор gui фреймворковPyGI (gtk)Хорошая документация для gtk 3.
Документация для gobject только для C.
Что делать, если не хватает одного потока?threading:
● I/O;● расширения на C отпускают GIL;● общая память.
Что делать, если не хватает одного потока?multiprocessing:
● I/O и “вычисления”;● изолированная память.
Что делать, если не хватает одного потока?Что у нас есть:
● STM - не готово;● акторы - есть pykka, но без поддержки
multiprocessing;● Queue, Pipe и т.д.
Взаимодействие с окружениемDBus:
● библиотеки почти во всех ЯП;● стандарт freedesktop.org;● очень простой;● синхронный/асинхронный.
Взаимодействие с окружениемИнтеграция с DE:
● unity: scopes, indicators;● gnome: extensions;● kde: plasma applets, krunner.
Сборка и публикация пакетовКак собрать deb-пакет из python-пакета и выложить в launchpad:
1. заполнить debian/*;2. собрать пакет, используя debuild;3. отправить в launchpad, используя dput;4. повторить пункты 1 - 3 для всех
зависимостей, которых нет в репозитории.
Сборка и публикация пакетовМожно упростить с pytoppa, он:
● имеет простой конфиг в yaml:
● берёт информацию из setup.py;● генерирует changelog;● написан мной =)
Сборка и публикация пакетовКак собрать deb-пакет из python-пакета и выложить в launchpad с pytoppa:
1. заполнить .pytoppa.yml;2. запустить pytoppa <ключ> <ppa>;3. повторить 1 - 2 для всех зависимостей.
Спасибо за внимание.
[email protected]://nvbn.info/