23
Разработка desktop приложений для linux на python Владимир Яковлев [email protected]

Разработка декстопных приложений для linux (Владимир Яковлев)

  • 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

Page 1: Разработка декстопных приложений для linux (Владимир Яковлев)

Разработка desktop приложений для linuxна pythonВладимир Яковлев[email protected]

Page 2: Разработка декстопных приложений для linux (Владимир Яковлев)

Кто я?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 (Владимир Яковлев)

Основные моментыОбзор gui фреймворков:

● TkInter;● PyQt/PySide;● PyGI (gtk).

Что делать, если не хватает одного потока?Взаимодействие с окружением.Сборка и публикация пакетов.

Page 4: Разработка декстопных приложений для linux (Владимир Яковлев)

Обзор gui фреймворковTkInterВходит в стандартную библиотеку:

Page 5: Разработка декстопных приложений для linux (Владимир Яковлев)

Обзор gui фреймворковTkInterPythonic:

Page 6: Разработка декстопных приложений для linux (Владимир Яковлев)

Обзор gui фреймворковTkInterНе нативно выглядит:

Page 7: Разработка декстопных приложений для linux (Владимир Яковлев)

Обзор gui фреймворковPyQt vs PySidePyQt:

● поддерживает Qt 5;● лицензия - GPL.

PySide:● только Qt 4;● лицензия - LGPL.

Page 8: Разработка декстопных приложений для linux (Владимир Яковлев)

Обзор gui фреймворковPySideQtDesigner - можно легко и быстро сделать интерфейс.

Хорошая документация с примерами.

Page 9: Разработка декстопных приложений для linux (Владимир Яковлев)

Обзор gui фреймворковPySideВезде нативный внешний вид:

Page 10: Разработка декстопных приложений для linux (Владимир Яковлев)

Обзор gui фреймворковPySideWebKit, Phonon и другие батарейки:

Page 11: Разработка декстопных приложений для linux (Владимир Яковлев)

Обзор gui фреймворковPySideНе pythonic:

Page 12: Разработка декстопных приложений для linux (Владимир Яковлев)

Обзор gui фреймворковPyGI (gtk)Нативный внешний вид в linux:

Page 13: Разработка декстопных приложений для linux (Владимир Яковлев)

Обзор gui фреймворковPyGI (gtk)Pythonic:

Page 14: Разработка декстопных приложений для linux (Владимир Яковлев)

Обзор gui фреймворковPyGI (gtk)Хорошая документация для gtk 3.

Документация для gobject только для C.

Page 15: Разработка декстопных приложений для linux (Владимир Яковлев)

Что делать, если не хватает одного потока?threading:

● I/O;● расширения на C отпускают GIL;● общая память.

Page 16: Разработка декстопных приложений для linux (Владимир Яковлев)

Что делать, если не хватает одного потока?multiprocessing:

● I/O и “вычисления”;● изолированная память.

Page 17: Разработка декстопных приложений для linux (Владимир Яковлев)

Что делать, если не хватает одного потока?Что у нас есть:

● STM - не готово;● акторы - есть pykka, но без поддержки

multiprocessing;● Queue, Pipe и т.д.

Page 18: Разработка декстопных приложений для linux (Владимир Яковлев)

Взаимодействие с окружениемDBus:

● библиотеки почти во всех ЯП;● стандарт freedesktop.org;● очень простой;● синхронный/асинхронный.

Page 19: Разработка декстопных приложений для linux (Владимир Яковлев)

Взаимодействие с окружениемИнтеграция с DE:

● unity: scopes, indicators;● gnome: extensions;● kde: plasma applets, krunner.

Page 20: Разработка декстопных приложений для linux (Владимир Яковлев)

Сборка и публикация пакетовКак собрать deb-пакет из python-пакета и выложить в launchpad:

1. заполнить debian/*;2. собрать пакет, используя debuild;3. отправить в launchpad, используя dput;4. повторить пункты 1 - 3 для всех

зависимостей, которых нет в репозитории.

Page 21: Разработка декстопных приложений для linux (Владимир Яковлев)

Сборка и публикация пакетовМожно упростить с pytoppa, он:

● имеет простой конфиг в yaml:

● берёт информацию из setup.py;● генерирует changelog;● написан мной =)

Page 22: Разработка декстопных приложений для linux (Владимир Яковлев)

Сборка и публикация пакетовКак собрать deb-пакет из python-пакета и выложить в launchpad с pytoppa:

1. заполнить .pytoppa.yml;2. запустить pytoppa <ключ> <ppa>;3. повторить 1 - 2 для всех зависимостей.

Page 23: Разработка декстопных приложений для linux (Владимир Яковлев)

Спасибо за внимание.

[email protected]://nvbn.info/