README for Debian python3-qtpy package ====================================== This README is designed for package maintainers whose packages depend on python3-qtpy. This metapackage allows developers to write Python Qt applications that are agnositic about the backing Python Qt library, as described in the package's README file. The way the Python Qt is chosen is described in that README file and, in more detail, in the qtpy/__init__.py file. In summary (and ignoring the PySide 2 library, which is barely supported on Debian): * If one of PyQt5, PyQt6 or PySide 6 (in that order) has already been imported when qtpy is first imported, then that library will be used. * Otherwise, if the QT_API environment variable is set to one of "pyqt5", "pyqt6", "pyside6" and the requisite Python packages are installed, then that will be used. * Otherwise, the first of "pyqt5", "pyqt6", "pyside6" with the requisite Python packages installed will be used. The Debian python3-qtpy package does *not* depend on any Qt backend; it is the responsibility of the package depending on python3-qtpy to specify the needed dependencies. To simplify this, there are three metapackages provided: python3-qtpy-pyqt5, python3-qtpy-pyqt6 and python3-qtpy-pyside6 that depend on the respective Python Qt libraries. These metapackages pull in many more dependencies than needed for most packages, though. To determine the packages actually needed, a reasonable approach is: (1) Decide which of PyQt5, PyQt6 or PySide 6 your package will depend on. Unless you or the package author has manually specified anything other than PyQt5 via setting the QT_API environment variable in the code, this should be PyQt5. (2) Identify the qtpy modules imported by your package, for example by running the code: rgrep qtpy | grep import | cut -d: -f2- | sort -u If all of the lines begin "from qtpy import " (or those that don't, for example "from qtpy.QtTest import *", are included within the others), then a list of qtpy imports can be obtained with: rgrep qtpy | grep import | cut -d: -f2- | grep 'from qtpy import' | sed -e 's/from qtpy import //' | perl -pe 's/, /\n/g;' | sort -u (There are probably simpler ways, but this does the job!) (3) You will need to depend on: * python3-pyqt5 for PyQt5 * python3-pyqt6 for PyQt6 * python3-pyside6.qtcore python3-pyside6.qtgui python3-pyside6.qtopengl python3-pyside6.qtwidgets for PySide 6 In addition to these core packages, check the list of qtpy modules below to determine the additional packages required. Not all Qt modules are provided by Debian for all three of these frameworks. The required packages are listed; those in square brackets are already listed above. A script qtpy-get-dependencies is provided in the python3-qtpy package which takes a list of QtPy imports and returns a list of the required Debian packages. By default, the PyQt5 packages are listed, but the flags --pyqt6 or --pyside6 can be used to change this. The overall command line then becomes: qtpy-get-dependencies $(rgrep qtpy | grep import | cut -d: -f2- | grep 'from qtpy import' | sed -e 's/from qtpy import //' | perl -pe 's/, /\n/g;' | sort -u) qtpy.Qsci --------- python3-pyqt5.qsci python3-pyqt6.qsci qtpy.Qt3DAnimation ------------------ python3-pyside6.qt3danimation qtpy.Qt3DCore ------------- python3-pyside6.qt3dcore qtpy.Qt3DExtras --------------- python3-pyside6.qt3dextras qtpy.Qt3DInput -------------- python3-pyside6.qt3dinput qtpy.Qt3DLogic -------------- python3-pyside6.qt3dlogic qtpy.Qt3DRender --------------- python3-pyside6.qt3drender qtpy.QtAxContainer ------------------ qtpy.QtBluetooth ---------------- python3-pyqt5.qtbluetooth python3-pyqt6.qtbluetooth python3-pyside6.qtbluetooth qtpy.QtCharts ------------- python3-pyqt5.qtchart python3-pyqt6.qtcharts python3-pyside6.qtcharts qtpy.QtConcurrent ----------------- python3-pyside6.qtconcurrent qtpy.QtCore ----------- [python3-pyqt5] [python3-pyqt6] [python3-pyside6.qtcore] [python3-pyside6.qtgui] qtpy.QtDataVisualization ------------------------ python3-pyside6.qtdatavisualization qtpy.QtDBus ----------- [python3-pyqt5] [python3-pyqt6] python3-pyside6.qtdbus qtpy.QtDesigner --------------- [python3-pyqt5] python3-pyqt6.qtdesigner python3-pyside6.qtdesigner qtpy.QtGui ---------- [python3-pyqt5] [python3-pyqt6] [python3-pyside6.qtgui] [python3-pyside6.qtopengl] [python3-pyside6.qtwidgets] qtpy.QtHelp ----------- [python3-pyqt5] python3-pyqt6.qthelp python3-pyside6.qthelp qtpy.QtLocation --------------- python3-pyqt5.qtpositioning (python3-pyside6.qtlocation is not supported by qtpy) qtpy.QtMacExtras ---------------- qtpy.QtMultimedia ----------------- python3-pyqt5.qtmultimedia python3-pyqt6.qtmultimedia python3-pyside6.qtmultimedia qtpy.QtMultimediaWidgets ------------------------ python3-pyqt5.qtmultimedia python3-pyqt6.qtmultimedia python3-pyside6.qtmultimediawidgets qtpy.QtNetworkAuth ------------------ python3-pyside6.qtnetworkauth qtpy.QtNetwork -------------- [python3-pyqt5] [python3-pyqt6] python3-pyside6.qtnetwork qtpy.QtNfc ---------- python3-pyqt5.qtnfc python3-pyqt6.qtnfc python3-pyside6.qtnfc qtpy.QtOpenGL ------------- [python3-pyqt5] python3-pyqt5.qtopengl [python3-pyqt6] [python3-pyside6.qtopengl] [python3-pyside6.qtgui] qtpy.QtOpenGLWidgets -------------------- [python3-pyqt6] python3-pyside6.qtopenglwidgets qtpy.QtPdf ---------- python3-pyqt6.qtpdf python3-pyside6.qtpdf qtpy.QtPdfWidgets ----------------- python3-pyqt6.qtpdf python3-pyside6.qtpdfwidgets qtpy.QtPositioning ------------------ python3-pyqt5.qtpositioning python3-pyqt6.qtpositioning python3-pyside6.qtpositioning qtpy.QtPrintSupport ------------------- [python3-pyqt5] [python3-pyqt6] python3-pyside6.qtprintsupport qtpy.QtPurchasing ----------------- qtpy.QtQml ---------- python3-pyqt5.qtquick python3-pyqt6.qtqml python3-pyside6.qtqml qtpy.QtQuick3D -------------- python3-pyqt6.qtquick3d python3-pyside6.qtquick3d qtpy.QtQuickControls2 --------------------- python3-pyside6.qtquickcontrols2 qtpy.QtQuick ------------ python3-pyqt5.qtquick python3-pyqt6.qtquick python3-pyside6.qtquick qtpy.QtQuickWidgets ------------------- python3-pyqt5.qtquick python3-pyqt6.qtquick python3-pyside6.qtquickwidgets qtpy.QtRemoteObjects -------------------- python3-pyqt5.qtremoteobjects python3-pyqt6.qtremoteobjects python3-pyside6.qtremoteobjects qtpy.QtScxml ------------ python3-pyside6.qtscxml qtpy.QtSensors -------------- python3-pyqt5.qtsensors python3-pyqt6.qtsensors python3-pyside6.qtsensors qtpy.QtSerialPort ----------------- python3-pyqt5.qtserialport python3-pyqt6.qtserialport python3-pyside6.qtserialport qtpy.QtSql ---------- python3-pyqt5.qtsql [python3-pyqt6] python3-pyside6.qtsql qtpy.QtStateMachine ------------------- python3-pyside6.qtstatemachine qtpy.QtSvg ---------- python3-pyqt5.qtsvg python3-pyqt6.qtsvg python3-pyside6.qtsvg qtpy.QtSvgWidgets ----------------- python3-pyqt6.qtsvg python3-pyside6.qtsvgwidgets qtpy.QtTest ----------- [python3-pyqt5] [python3-pyqt6] python3-pyside6.qttest qtpy.QtTextToSpeech ------------------- python3-pyqt5.qttexttospeech (python3-pyqt6.qttexttospeech is not supported by qtpy) (python3-pyside6.qttexttospeech is not supported by qtpy) qtpy.QtUiTools -------------- python3-pyside6.qtuitools qtpy.QtWebChannel ----------------- python3-pyqt5.qtwebchannel python3-pyqt6.qtwebchannel python3-pyside6.qtwebchannel qtpy.QtWebEngineCore -------------------- python3-pyqt5.qtwebengine python3-pyqt6.qtwebengine python3-pyside6.qtwebenginecore qtpy.QtWebEngine ---------------- python3-pyqt5.qtwebengine qtpy.QtWebEngineQuick --------------------- python3-pyqt6.qtwebengine python3-pyside6.qtwebenginequick qtpy.QtWebEngineWidgets ----------------------- python3-pyqt5.qtwebengine python3-pyqt6.qtwebengine python3-pyside6.qtwebenginewidgets (python3-pyside6.qtwebenginecore is also needed, but is a dependency of python3-pyside6.qtwebenginewidgets) qtpy.QtWebSockets ----------------- python3-pyqt5.qtwebsockets python3-pyqt6.qtwebsockets python3-pyside6.qtwebsockets qtpy.QtWidgets -------------- [python3-pyqt5] [python3-pyqt6] [python3-pyside6.qtgui] [python3-pyside6.qtopengl] [python3-pyside6.qtwidgets] qtpy.QtWinExtras ---------------- qtpy.QtX11Extras ---------------- python3-pyqt5.qtx11extras qtpy.QtXmlPatterns ------------------ python3-pyqt5.qtxmlpatterns qtpy.QtXml ---------- [python3-pyqt5] [python3-pyqt6] python3-pyside6.qtxml qtpy.shiboken ------------- [should probably not be used directly] qtpy.sip -------- [should probably not be used directly] [python3-pyqt5] [python3-pyqt6] qtpy.uic -------- [python3-pyqt5] python3-pyside6.qtuitools -- Julian Gilbey , Wed, 25 Dec 2024 11:12:32 +0000