Я пытаюсь запустить проект qml с QtMultimedia и PyQt5.
Я на Ubuntu 16.4 и я установил PyQt5 с pip3.
При запуске следующего кода (с python3) я получаю сообщение об ошибке «Плагин не может быть загружен для модуля« QtMultimedia »» (подробности ниже кода)
main.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtQml import QQmlApplicationEngine
from PyQt5.QtCore import QUrl
if __name__ == "__main__":
app = QApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.load(QUrl("main.qml"))
if not engine.rootObjects():
sys.exit(-1)
ret = app.exec_()
sys.exit(ret)
main.qml
import QtQuick 2.9
import QtQuick.Window 2.11
import QtMultimedia 5.0
Window {
visible: true
width: 600
height: 400
title: qsTr("Haptic Screen Demonstrator")
}
Я получаю следующую ошибку:
QQmlApplicationEngine failed to load component
file:///home/juliette/Documents/4_DemoScreen/2_MultimediaTest/main.qml:4 plugin cannot be loaded for module "QtMultimedia":
Cannot load library /home/juliette/.local/lib/python3.6/site-packages/PyQt5/Qt/qml/QtMultimedia/libdeclarative_multimedia.so:
(libQt5MultimediaQuick.so.5: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type)
Я попытался удалить PyQt5 и переустановить его из пакетов Ubuntu. Это заставляет работать QtMultimedia, но версия модулей qt слишком старая (например, QtQuick.Controls 1 вместо QtQuick.Controls 2) для моего проекта.
Я нашел обходной путь, сказав PyQt5 использовать модули Qt системы вместо тех, которые упакованы PyQt. Действительно, я ранее установил Qt5 через установщик с сайта Qt. Для этого я звоню
LD_LIBRARY_PATH=/home/juliette/Qt/5.12.1/gcc_64/lib python3 main.py
Кто-нибудь сталкивался с этой проблемой раньше? Я видел несколько сообщений на форуме, связанных с подобной проблемой в течение многих лет. Проблема, которая кажется решенной в какой-то момент, а затем снова появляется.
Может быть, я что-то упускаю ... Я думал сообщить об этом PyQt5, но сначала я хотел посмотреть, не была ли ошибка моей ...