PyQt5 и QtMultimedia - PullRequest
       35

PyQt5 и QtMultimedia

0 голосов
/ 22 марта 2019

Я пытаюсь запустить проект 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, но сначала я хотел посмотреть, не была ли ошибка моей ...

...