diff --git a/src/plugins/python/pyside.cpp b/src/plugins/python/pyside.cpp index 896620ae32e..bae0c0753af 100644 --- a/src/plugins/python/pyside.cpp +++ b/src/plugins/python/pyside.cpp @@ -86,17 +86,36 @@ void PySideInstaller::installPyside(const FilePath &python, { QMap availablePySides; - const std::optional qtInstallDir - = QtSupport::LinkWithQtSupport::linkedQt().tailRemoved("Tools/sdktool/share/qtcreator"); - if (qtInstallDir) { - const FilePath qtForPythonDir = qtInstallDir->pathAppended("QtForPython"); - for (const FilePath &versionDir : qtForPythonDir.dirEntries(QDir::Dirs | QDir::NoDotAndDotDot)) { - FilePath requirements = versionDir.pathAppended("requirements.txt"); - if (requirements.exists()) - availablePySides[QVersionNumber::fromString(versionDir.fileName())] = requirements; + const Utils::QtcSettings *settings = Core::ICore::settings(QSettings::SystemScope); + + const FilePaths requirementsList + = Utils::transform(settings->value("Python/PySideWheelsRequirements").toList(), + &FilePath::fromSettings); + for (const FilePath &requirements : requirementsList) { + if (requirements.exists()) { + auto version = QVersionNumber::fromString(requirements.parentDir().fileName()); + availablePySides[version] = requirements; } } + if (requirementsList.isEmpty()) { // fallback remove in Qt Creator 13 + const QString hostQtTail = HostOsInfo::isMacHost() + ? QString("Tools/sdktool") + : QString("Tools/sdktool/share/qtcreator"); + + const std::optional qtInstallDir + = QtSupport::LinkWithQtSupport::linkedQt().tailRemoved(hostQtTail); + if (qtInstallDir) { + const FilePath qtForPythonDir = qtInstallDir->pathAppended("QtForPython"); + for (const FilePath &versionDir : + qtForPythonDir.dirEntries(QDir::Dirs | QDir::NoDotAndDotDot)) { + FilePath requirements = versionDir.pathAppended("requirements.txt"); + if (!requirementsList.contains(requirements) && requirements.exists()) + availablePySides[QVersionNumber::fromString(versionDir.fileName())] + = requirements; + } + } + } auto install = new PipInstallTask(python); connect(install, &PipInstallTask::finished, install, &QObject::deleteLater);