Использование чего-либо из QtQuick.Controls вызывает ошибку защищенного модуля - PullRequest
0 голосов
/ 21 июня 2020

Я получаю следующие ошибки, когда пытаюсь запустить программу:

плагин не может быть загружен для модуля, не удается установить тип в защищенный модуль

Platform:
Python 3.8
PyQt5 5.15.0
Visual Studio Community 2019
Windows 10 Pro 1909

main python file (the whole thing is pretty much the example from here: https://codeloop.org/pyqt5-creating-first-window/)

import numpy
import os
import sys
from PyQt5.QtQml import QQmlApplicationEngine
from PyQt5.QtWidgets import QApplication

def main():
    app =QApplication(sys.argv)
    engine = QQmlApplicationEngine()
    engine.load(os.path.join(os.path.dirname(__file__), "MainApp.qml"))
 
 
    if not engine.rootObjects():
        return -1
 
    return app.exec_()

if __name__ == '__main__':
    main(); 

Соответствующий файл QML « MainApp.qml »:

import QtQuick.Window 2.15
import QtQuick.Controls 2.15
import QtQuick 2.15

Window {
 
    visible:true
    width:600
    height:400
    color:"yellow"
    title: "PyQt5 QML Window"
 
    Button {
        text: "Something"
        anchors.horizontalCenter: parent.horizontalCenter
        anchors.verticalCenter: parent.verticalCenter
    }
 
 
}

Без использования чего-либо из QtQuick.Controls, он работает, но как только я добавляю кнопку, он генерирует следующие ошибки:

QQmlApplicationEngine failed to load component
file:///C:/Users/elano/Source/Repos/Projekt-1-SS2020/Projekt-1-SS2020/MainApp.qml:15:5: Type Button unavailable
file:///C:/Users/elano/vpqt/lib/site-packages/PyQt5/Qt/qml/QtQuick/Controls.2/qmldir: plugin cannot be loaded for module "QtQuick.Controls": Cannot install type 'VerticalHeaderView' into protected module 'QtQuick.Controls' version '2'
<Unknown File>: Cannot install type 'HorizontalHeaderView' into protected module 'QtQuick.Controls' version '2'
<Unknown File>: Cannot install element 'SplitHandle' into protected module 'QtQuick.Controls' version '2'
...

Файл, который он пытается найти (qmldir), существует и содержит это:

module QtQuick.Controls
plugin qtquickcontrols2plugin
classname QtQuickControls2Plugin
depends QtQuick.Templates 2.5
designersupported

Кто-нибудь знает, что здесь происходит? Требуется дополнительная информация?

1 Ответ

0 голосов
/ 21 июня 2020

Хорошо, теперь я чувствую себя глупо. Я уже вроде получил свой ответ в моем коде, но поскольку он не заставил Pyside2 работать, я закомментировал его ... Проблема заключалась в том, что переменная среды была установлена ​​неправильно. Добавление этого после того, как мои операторы импорта в моем основном файле исправили это:

dirname = os.path.dirname(PyQt5.__file__)
plugin_path = os.path.join(dirname, 'plugins', 'platforms')
os.environ['QML2_IMPORT_PATH'] = os.path.join(dirname, 'qml')

Ни в одном из найденных мной руководств об этом не упоминалось. Отлично.

...