Friday, November 25, 2011

Почему лучше не связываться с wxPython

Если вы начинаете проект на Python и в качестве GUI думаете использовать wxPython, то я не советую вам это делать по причинам переносимости. Ниже мой комментарий в теме, где такая проблема всплыла.

Тема wxPython на Linux вылазит, как правило в начале работы, когда вовсю вылазят косяки сборки wxPython. В свое время мы отказались от wx по двум причинам:
  • у wx (по крайней мере с wxPython) была проблема с обратной совместимостью на неосновных версиях.
  • wx, под Linux, дергает GTK. Но, работая с GTK напрямую еще есть шансы на то, что на другой конфигураци*  версия библиотеки будет совместима с той, которая используется для разработки. С wх, и в особенности с wxPython, такие шансы невысоки и вот почему. wxPython представляет собой связку четырех сущностей упомянутые выше GTK и wx, плюс wxPython и Python. Пакеты с GTK, wx, wxPython и Python собирают разные люди. Насколько они договорятся между собой о используемых версиях (UPD: и насколько большое рукожопие проявят в процессе сборки) -  большой вопрос. 
Если вы только начинаете проект я бы рекомендовал использовать более популярные альтернативы: pyQT или pyGTK**. Они вовсю используются в дистрибутивах, потому вероятность поиметь проблем с кривыми сборками и переносимостью на порядок меньше. Перед этим, для GUI, я использовал связку TkInter+Tile. Теперь, я предпочитаю вариант Java+Jython.

* - например, апгрейд дистрибутива или его смена
** - pyQT, пожалуй, самое лучшее. Но для коммерческих проектов надо лицензироваться, причем - недешево. Вместо него можно попробовать PySide, если он присутствует в вашем дистрибутиве. Вариант с GTK тоже имеет свои нюансы. Не так давно вышла GTK3. Я не знаю, совместимы ли GTK2 и GTK3, есть ли биндинг к GTK3, насколько он совместим с GTK2 и насколько вообще стабильна эта связка.