aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/libpyside/pyside.cpp
diff options
context:
space:
mode:
authorAdrian Herrmann <adrian.herrmann@qt.io>2023-02-07 17:04:54 +0100
committerAdrian Herrmann <adrian.herrmann@qt.io>2023-02-14 13:13:35 +0100
commit06e7cb7d61e6ef7bbd073b85cbf8d5e324e242c6 (patch)
tree71315845d60e0dbdd5de070153e740d65d9d4014 /sources/pyside6/libpyside/pyside.cpp
parente74125a794511b85e1a03f1c613006c2b6439b3f (diff)
Fix broken Qt prefix for conda installs
If PySide6 is installed through Anaconda, it will conflict with Anaconda's own Qt package, which is based on Qt 5, creating a version mismatch. To work around this, if PySide runs in a conda env, register an internal qt.conf setting the prefix value to the corresponding path in site-packages. Pick-to: 6.4 Change-Id: I5639d7eeaf524a8a4aa533dc5a83bdb0c74cbd9f Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/pyside6/libpyside/pyside.cpp')
-rw-r--r--sources/pyside6/libpyside/pyside.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/sources/pyside6/libpyside/pyside.cpp b/sources/pyside6/libpyside/pyside.cpp
index 34c4e3955..1ab5e337e 100644
--- a/sources/pyside6/libpyside/pyside.cpp
+++ b/sources/pyside6/libpyside/pyside.cpp
@@ -827,12 +827,20 @@ bool registerInternalQtConf()
maybeQtConfPath = QDir::toNativeSeparators(maybeQtConfPath);
bool executableQtConfAvailable = QFileInfo::exists(maybeQtConfPath);
+ QString maybeQt6ConfPath = QDir(appDirPath).filePath(u"qt6.conf"_s);
+ maybeQt6ConfPath = QDir::toNativeSeparators(maybeQt6ConfPath);
+ bool executableQt6ConfAvailable = QFileInfo::exists(maybeQt6ConfPath);
+
// Allow disabling the usage of the internal qt.conf. This is necessary for tests to work,
// because tests are executed before the package is installed, and thus the Prefix specified
// in qt.conf would point to a not yet existing location.
bool disableInternalQtConf =
qEnvironmentVariableIntValue("PYSIDE_DISABLE_INTERNAL_QT_CONF") > 0;
- if (disableInternalQtConf || executableQtConfAvailable) {
+ bool runsInConda =
+ qEnvironmentVariableIsSet("CONDA_DEFAULT_ENV") || qEnvironmentVariableIsSet("CONDA_PREFIX");
+
+ if (!runsInConda && (disableInternalQtConf || executableQtConfAvailable) ||
+ runsInConda && executableQt6ConfAvailable) {
registrationAttempted = true;
return false;
}