Для тех кто пишет расширения на PyQt/PySide для CG-софтов.
Когда я только начинал писать тулзы под Maya (тогда еще версия 2010-2011) мне приходилось ручками ставить PyQt4 под Maya. Даже написал мануалы по установке на своём сайте. Но потом стал доступен из коробки PySide и позже он обновится до PySide2. Для некоторых систем была поддержка PyQt5.
И как простому разработчику поддерживать этот зоопарк? Ведь хочется чтобы тул работал на любой версии (вы тоже делали модуль что-то типа import_qt.py?😁)
На помощь приходит проект Qt.py который поставил себе цель унифицировать использование Qt-биндингов вне зависимости от среды где запускается код. Те, кто давно пишут на Qt, скорее всего знают этот проект.
Он стал стандартом для CG-индустрии и используется в топовых студиях и проектах.
Qt․py помогает запускать один и тот же код на разных платформах с разными вариантами Qt-библиотек. Это может быть как интеграция в CG-софт, так и переносимость стендалонов между разными платформами с разными версиями Python.
Я решил рассказать о некоторых особенностях работы с этой библиотекой.
Сегодня о том, как установить и использовать Qt․py и что это вам даёт.
Установка
pip install Qt.py
Чтобы начать использовать Qt․py в коде достаточно заменить импорт вашего варианта Qt-биндинга на Qt․py
from [PySide|PyQt4|PySide2|PyQt5] import QtWidgets
=>
from Qt import QtWidgets
Теперь ваш код будет поддерживать любой вариант биндинга Qt в Python.
При этом не потребуется использовать if-else конструкции под разные версии. Все вызовы теперь одинаковы.
Всё что нужно сделать, это написать его по правилам PySide2. Именно эта версия была взята за основу.
Приоритет импорта такой:
1. PySide2
2. PyQt5
3. PySide
4. PyQt4
Что именно загрузилось можно посмотреть в переменной __binding__
>>> import Qt
>>> Qt.__binding__
'PySide2'
Приоритет имопрта можно изменить через переменные QT_PREFERRED_BINDING и QT_PREFERRED_BINDING_JSON. Причем под каждый проект оверрайды можно настраивать индивидеально.
#qt#libs
A Historic Victory in Kuda: Jubaland Security Forces Deliver a Crushing Blow to Al-Shabab. Read.
https://borkena.com/2026/01/26/jubaland-a-historic-victory-in-kuda-jubaland-security-forces-deliver-a-crushing-blow-to-al-shabab/#Somalia#Jubaland
#Op_ed: Architectonics of Trust: #Somalia’s unilateral constitutional amendments, risk of fragmentation
In 2012, Somalia adopted a provisional constitution to guide its transition to a federal system, balancing powers between the central government and regional states. Adam Daud Ahmed warns that recent efforts to finalize it through “non-consensual mechanisms” and “executive-led maneuvers” have reignited tensions, with #Puntland and #Jubaland opposing amendments that “bypass broad consultation.”
He emphasizes, “A constitution is not a standard statute; it is the social contract,” and that in a federal system, “legitimacy derives from consensus,” not legality alone. Extending mandates under constitutional reform risks “authoritarian drift” and “undermines the social contract.”
According to the author, lasting stability requires “trust, dialogue, and consensus,” with leaders prioritizing “the social contract over their own political survival.”
https://addisstandard.com/?p=56029
#Op_ed: Converging Geopolitics: Insurgency, recognition, expanding rivalry reshape Horn of #Africa future
The Horn of Africa faces “strategic compression,” where local insurgencies and global power rivalries converge along the Red Sea, argues Mohamud A. Ahmed. He notes that recent gains in #Jubaland, where #Somali forces disrupted #Al_Shabaab, show progress but reinforce a key reality: “Territory reclaimed is not stability secured.”
He explains that central to this volatility is #Somaliland, whose 2025 recognition by Israel has escalated a local sovereignty dispute into a geopolitical flashpoint involving #Egypt, #Turkey, and #Ethiopia.
Ahmed warns that external competition risks fueling insurgent networks and stresses that the Horn’s stability depends on whether regional powers pursue “structured coexistence” rather than unmanaged escalation.
https://addisstandard.com/?p=55935