From e6ca757fe027a76f73b93583e5a8ab2ac6af6c9e Mon Sep 17 00:00:00 2001 From: Morgan Epp <60796713+epmog@users.noreply.github.com> Date: Wed, 3 Apr 2024 19:28:59 +0000 Subject: [PATCH] fix: set QT_API to pyside6 or pyside2 for deadline-cli (#284) Signed-off-by: Morgan Epp <60796713+epmog@users.noreply.github.com> --- src/deadline/client/ui/__init__.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/deadline/client/ui/__init__.py b/src/deadline/client/ui/__init__.py index be9b74a6..b48d22d4 100644 --- a/src/deadline/client/ui/__init__.py +++ b/src/deadline/client/ui/__init__.py @@ -60,6 +60,7 @@ def gui_context_for_cli(): app.exec() """ import importlib + import os from os.path import basename, dirname, join, normpath import shlex import shutil @@ -69,8 +70,9 @@ def gui_context_for_cli(): import click - has_pyside = importlib.util.find_spec("PySide6") or importlib.util.find_spec("PySide2") - if not has_pyside: + has_pyside6 = importlib.util.find_spec("PySide6") + has_pyside2 = importlib.util.find_spec("PySide2") + if not (has_pyside6 or has_pyside2): message = "Optional GUI components for deadline are unavailable. Would you like to install PySide?" will_install_gui = click.confirm(message, default=False) if not will_install_gui: @@ -120,6 +122,12 @@ def gui_context_for_cli(): # time consider local editables `pip install .[gui]` subprocess.run([sys.executable, "-m", "pip", "install", pyside6_pypi]) + # set QT_API to inform qtpy which dependencies to look for. + # default to pyside6 and fallback to pyside2. + # Does not work with PyQt5 which is qtpy default + os.environ["QT_API"] = "pyside6" + if has_pyside2: + os.environ["QT_API"] = "pyside2" try: from qtpy.QtGui import QIcon from qtpy.QtWidgets import QApplication, QMessageBox