«Модуль {Module_Name} не установлен» при запуске скрипта Python с использованием PyQt5Python

Программы на Python
Anonymous
«Модуль {Module_Name} не установлен» при запуске скрипта Python с использованием PyQt5

Сообщение Anonymous »

Я пытаюсь создать пользовательский интерфейс, используя PyQt5 и Python. Я построил базу, используя main.qml и несколько стилизованных файлов qml в том же каталоге, и она импортировалась нормально, но я решил разбить все по папкам, чтобы было более организовано, но теперь ни один из моих импортов не работает, что бы я ни делал.
Новая структура файла:

Код: Выделить всё

Interface/
│   ├── main.py
│   ├── resources.qrc
│   ├── resources_rc.py
│   │
│   ├── src/
│   │   ├── main.qml
│   │   │
│   │   ├── Components/          # Directory for custom QML components
│   │   │   ├── Sections/        # Directory for "Sections" module
│   │   │   │   ├── Status.qml
├── Title.qml
│   │   │   │   └── qmldir       # qmldir file for "Sections" module
│   │   │   │
│   │   │   └── StyledElements/  # Directory for "StyledElements" module
│   │   │       ├── StyledButton.qml
│   │   │       └── qmldir
Стилизованные элементы и разделы содержат файл qmldir, который выглядит следующим образом:

Код: Выделить всё

module Sections
Status 1.0 Status.qml
Title 1.0 Title.qml
Мой main.py вызывает это так:

Код: Выделить всё

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

def handle_warnings(warnings):
for warning in warnings:
print(f"QML Warning: {warning.toString()}")

app = QApplication([])

engine = QQmlApplicationEngine()
engine.warnings.connect(handle_warnings)

# Load QML file
qml_file_path = os.path.abspath('src/main.qml')
print(f"Loading QML file: {qml_file_path}")
engine.load(qml_file_path)

if not engine.rootObjects():
print("Failed to load QML file.")
sys.exit(-1)
else:
print("QML file loaded successfully.")

app.exec_()

sys.exit(app.exec_())
И мой файл main.qml выглядит так:

Код: Выделить всё

import QtQuick 2.15
import QtQuick.Controls 2.15
import StyledElements 1.0
import Sections 1.0

ApplicationWindow {
title: 'Interceptor'
visible: true
width: 700
height: 600

Rectangle {
id: rectangle
width: 700
height: 725
color: 'white'

Section_Title{}
StyledButton{}
}
}

Всегда выдает такие ошибки:

Код: Выделить всё

QML Warning: module "Sections" is not installed
QML Warning: module "StyledElements" is not installed
QML Warning: module "Sections" is not installed
QML Warning: module "StyledElements" is not installed
Что я пробовал:
Я пробовал заключать импорт в кавычки в файл main.qml, например:

Код: Выделить всё

import "StyledElements" 1.0
import "Sections" 1.0
Я пробовал настроить пути импорта следующим образом:

Код: Выделить всё

# Set the path to the QML files
engine.addImportPath(os.path.abspath("/Components/Sections"))
engine.addImportPath(os.path.abspath("/Components/StyledElements"))

# Load QML file
qml_file_path = os.path.abspath('src/main.qml')
engine.load(qml_file_path)
Также пробовал:

Код: Выделить всё

engine.addImportPath(os.path.abspath("qrc:/"))
or
engine.addImportPath(os.path.abspath("qrc:/src/main.qml"))
Из того, что я могу сказать, проблема не связана с загрузкой main.qml, потому что, когда я меняю путь, он выдает мне ошибку о том, что он не найден, и кажется, что ошибка полученный из импорта в main.qml.
Я попробовал использовать файл ресурсов, который выглядит так:

Код: Выделить всё


src/main.qml
src/Components/Sections/NvStatus.qml
src/Components/Sections/qmldir
src/Components/StyledElements/StyledButton.qml
src/Components/StyledElements/qmldir


Я скомпилировал файл ресурсов в Python с помощью

Код: Выделить всё

pyrcc5 resources.qrc -o resources_rc.py
и импортировал новый файл py, используя main.py

Код: Выделить всё

import resources_rc
На этом этапе я провел несколько часов в Chat GPT и Google, пытаясь найти ответ. Я пробовал несколько вещей, которые «работают» в том смысле, что они в конце загружают qml, но не могут загрузить пользовательский модуль. Я не знаю, как действовать. Все, что я пробовал, привело меня к одной и той же проблеме: main.qml не смог загрузить модуль с ошибками, показанными выше

Подробнее здесь: https://stackoverflow.com/questions/786 ... sing-pyqt5

Вернуться в «Python»