Разработка декстопных приложений для linux (Владимир...
DESCRIPTION
Владимир Яковлев - Python Developer / Odesk / Россия, Санкт-Петербург - выбор фреймворка: TkInter/PySide/PyQt/PyGI; - что делать если не хватает одного потока; - взаимодействие с системой и другими приложениями; - сборка и публикация пакетов. http://www.it-sobytie.ru/events/2040TRANSCRIPT
![Page 1: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/1.jpg)
Разработка desktop приложений для linuxна pythonВладимир Яковлев[email protected]
![Page 2: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/2.jpg)
Кто я?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/
![Page 3: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/3.jpg)
Основные моментыОбзор gui фреймворков:
● TkInter;● PyQt/PySide;● PyGI (gtk).
Что делать, если не хватает одного потока?Взаимодействие с окружением.Сборка и публикация пакетов.
![Page 4: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/4.jpg)
Обзор gui фреймворковTkInterВходит в стандартную библиотеку:
![Page 5: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/5.jpg)
Обзор gui фреймворковTkInterPythonic:
![Page 6: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/6.jpg)
Обзор gui фреймворковTkInterНе нативно выглядит:
![Page 7: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/7.jpg)
Обзор gui фреймворковPyQt vs PySidePyQt:
● поддерживает Qt 5;● лицензия - GPL.
PySide:● только Qt 4;● лицензия - LGPL.
![Page 8: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/8.jpg)
Обзор gui фреймворковPySideQtDesigner - можно легко и быстро сделать интерфейс.
Хорошая документация с примерами.
![Page 9: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/9.jpg)
Обзор gui фреймворковPySideВезде нативный внешний вид:
![Page 10: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/10.jpg)
Обзор gui фреймворковPySideWebKit, Phonon и другие батарейки:
![Page 11: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/11.jpg)
Обзор gui фреймворковPySideНе pythonic:
![Page 12: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/12.jpg)
Обзор gui фреймворковPyGI (gtk)Нативный внешний вид в linux:
![Page 13: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/13.jpg)
Обзор gui фреймворковPyGI (gtk)Pythonic:
![Page 14: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/14.jpg)
Обзор gui фреймворковPyGI (gtk)Хорошая документация для gtk 3.
Документация для gobject только для C.
![Page 15: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/15.jpg)
Что делать, если не хватает одного потока?threading:
● I/O;● расширения на C отпускают GIL;● общая память.
![Page 16: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/16.jpg)
Что делать, если не хватает одного потока?multiprocessing:
● I/O и “вычисления”;● изолированная память.
![Page 17: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/17.jpg)
Что делать, если не хватает одного потока?Что у нас есть:
● STM - не готово;● акторы - есть pykka, но без поддержки
multiprocessing;● Queue, Pipe и т.д.
![Page 18: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/18.jpg)
Взаимодействие с окружениемDBus:
● библиотеки почти во всех ЯП;● стандарт freedesktop.org;● очень простой;● синхронный/асинхронный.
![Page 19: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/19.jpg)
Взаимодействие с окружениемИнтеграция с DE:
● unity: scopes, indicators;● gnome: extensions;● kde: plasma applets, krunner.
![Page 20: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/20.jpg)
Сборка и публикация пакетовКак собрать deb-пакет из python-пакета и выложить в launchpad:
1. заполнить debian/*;2. собрать пакет, используя debuild;3. отправить в launchpad, используя dput;4. повторить пункты 1 - 3 для всех
зависимостей, которых нет в репозитории.
![Page 21: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/21.jpg)
Сборка и публикация пакетовМожно упростить с pytoppa, он:
● имеет простой конфиг в yaml:
● берёт информацию из setup.py;● генерирует changelog;● написан мной =)
![Page 22: Разработка декстопных приложений для linux (Владимир Яковлев)](https://reader034.vdocuments.site/reader034/viewer/2022051514/54b635ba4a7959da5e8b46f1/html5/thumbnails/22.jpg)
Сборка и публикация пакетовКак собрать deb-пакет из python-пакета и выложить в launchpad с pytoppa:
1. заполнить .pytoppa.yml;2. запустить pytoppa <ключ> <ppa>;3. повторить 1 - 2 для всех зависимостей.