diff options
| author | Adrian Herrmann <adrian.herrmann@qt.io> | 2023-02-07 17:04:54 +0100 |
|---|---|---|
| committer | Adrian Herrmann <adrian.herrmann@qt.io> | 2023-02-14 13:13:35 +0100 |
| commit | 06e7cb7d61e6ef7bbd073b85cbf8d5e324e242c6 (patch) | |
| tree | 71315845d60e0dbdd5de070153e740d65d9d4014 /sources/pyside6/libpyside/pyside.cpp | |
| parent | e74125a794511b85e1a03f1c613006c2b6439b3f (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.cpp | 10 |
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; } |
