I was working on a project called RaspMedia(my project folder's name is also that). I combined QML and python together using PyQt5.
I've tried to import QtMultimedia using the import statement import QtMutimedia 5.14
in my main.qml file.
This is my complete python code.
main.py
from PyQt5.QtCore import QObject, QUrl,QMimeDatabase,QVariant,QFileInfo,QMetaObject,Q_ARG
from PyQt5.QtWidgets import QApplication
from PyQt5.QtQml import QQmlApplicationEngine
import os
import sys
home = os.environ["HOME"]+"/"
print(home)
currentPath = home
def getList(directory:type=str):
a = os.popen("ls '"+directory+"'")
b = []
for i in a:
b.append(i.replace("\n", ""))
return b
def appendToList(mainList:type=list):
for i in mainList:
path = currentPath + i
mime = QMimeDatabase().mimeTypeForFile(QFileInfo(path)).name()
if mime == "inode/directory":
anObject = {"type":"folder", "name":i, "path":path }
QMetaObject.invokeMethod(win, "append", Q_ARG(QVariant, anObject))
print(anObject)
DIR_PATH = os.path.dirname(os.path.realpath(__file__))
if __name__ == '__main__':
file = os.path.join(DIR_PATH, "main.qml")
url = QUrl.fromLocalFile(file)
myApp = QApplication(sys.argv)
engine = QQmlApplicationEngine()
context = engine.rootContext()
context.setContextProperty("main", engine)
engine.load(url)
win = engine.rootObjects()[0]
appendToList(getList(home))
win.show()
sys.exit(myApp.exec_())
Running it gave me error following
file:///home/newtron/RaspMedia/main.qml:5:1: plugin cannot be loaded for module "QtMultimedia": Cannot load library /usr/local/lib/python3.6/dist-packages/PyQt5/Qt/qml/QtMultimedia/libdeclarative_multimedia.so: (libQt5MultimediaQuick.so.5: cannot open shared object file: No such file or directory)
On the same side pyside smoothly ran script without any errors.
This is the complete output of ldd /usr/local/lib/python3.6/dist-packages/PyQt5/Qt/qml/QtMultimedia/libdeclarative_multimedia.so
linux-vdso.so.1 (0x00007fff65783000)
libQt5MultimediaQuick.so.5 => not found
libQt5Multimedia.so.5 => /usr/local/lib/python3.6/dist-packages/PyQt5/Qt/qml/QtMultimedia/../../lib/libQt5Multimedia.so.5 (0x00007fe0d8bdc000)
libQt5Quick.so.5 => /usr/local/lib/python3.6/dist-packages/PyQt5/Qt/qml/QtMultimedia/../../lib/libQt5Quick.so.5 (0x00007fe0d84b1000)
libQt5Gui.so.5 => /usr/local/lib/python3.6/dist-packages/PyQt5/Qt/qml/QtMultimedia/../../lib/libQt5Gui.so.5 (0x00007fe0d7b9e000)
libQt5QmlModels.so.5 => /usr/local/lib/python3.6/dist-packages/PyQt5/Qt/qml/QtMultimedia/../../lib/libQt5QmlModels.so.5 (0x00007fe0d7904000)
libQt5Qml.so.5 => /usr/local/lib/python3.6/dist-packages/PyQt5/Qt/qml/QtMultimedia/../../lib/libQt5Qml.so.5 (0x00007fe0d72b7000)
libQt5Network.so.5 => /usr/local/lib/python3.6/dist-packages/PyQt5/Qt/qml/QtMultimedia/../../lib/libQt5Network.so.5 (0x00007fe0d6f0c000)
libQt5Core.so.5 => /usr/local/lib/python3.6/dist-packages/PyQt5/Qt/qml/QtMultimedia/../../lib/libQt5Core.so.5 (0x00007fe0d6732000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007fe0d64a6000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe0d6287000)
libpulse-mainloop-glib.so.0 => /usr/lib/x86_64-linux-gnu/libpulse-mainloop-glib.so.0 (0x00007fe0d6082000)
libpulse.so.0 => /usr/lib/x86_64-linux-gnu/libpulse.so.0 (0x00007fe0d5e32000)
libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fe0d5b1b000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe0d5792000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe0d53f4000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fe0d51dc000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe0d4deb000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fe0d4bce000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fe0d49c6000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe0d47c2000)
libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007fe0d4577000)
libicui18n.so.56 => /usr/local/lib/python3.6/dist-packages/PyQt5/Qt/qml/QtMultimedia/../../lib/libicui18n.so.56 (0x00007fe0d40de000)
libicuuc.so.56 => /usr/local/lib/python3.6/dist-packages/PyQt5/Qt/qml/QtMultimedia/../../lib/libicuuc.so.56 (0x00007fe0d3d26000)
libicudata.so.56 => /usr/local/lib/python3.6/dist-packages/PyQt5/Qt/qml/QtMultimedia/../../lib/libicudata.so.56 (0x00007fe0d2343000)
libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007fe0d2141000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe0d9143000)
libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007fe0d1f10000)
libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007fe0d1c5a000)
libpulsecommon-11.1.so => /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-11.1.so (0x00007fe0d19dc000)
libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007fe0d178f000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fe0d151d000)
libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fe0d1247000)
libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007fe0d1015000)
libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fe0d0e11000)
libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fe0d0c06000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fe0d08ce000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fe0d06a6000)
libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007fe0d0422000)
libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007fe0d0218000)
libsndfile.so.1 => /usr/lib/x86_64-linux-gnu/libsndfile.so.1 (0x00007fe0cff9f000)
libasyncns.so.0 => /usr/lib/x86_64-linux-gnu/libasyncns.so.0 (0x00007fe0cfd99000)
libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fe0cfb95000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fe0cf97a000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fe0cf776000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fe0cf570000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fe0cf34a000)
liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007fe0cf12e000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007fe0cee12000)
libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fe0cebf8000)
libFLAC.so.8 => /usr/lib/x86_64-linux-gnu/libFLAC.so.8 (0x00007fe0ce981000)
libogg.so.0 => /usr/lib/x86_64-linux-gnu/libogg.so.0 (0x00007fe0ce778000)
libvorbis.so.0 => /usr/lib/x86_64-linux-gnu/libvorbis.so.0 (0x00007fe0ce54d000)
libvorbisenc.so.2 => /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2 (0x00007fe0ce2a4000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fe0ce08f000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007fe0cde7a000)
Do I need to install any
Software Info
I figured out how we can fix it. PyQt5 has an error with the MultiMediaQuick package. So I copied and pasted
/usr/local/lib/python3.6/dist-packages/PyQt5/Qt/
and some additional files such as gstreamer and include folders to it. Now it works perfect.