我正在尝试学习PyQt5 + qml,到目前为止我尝试的所有工作都很好,但是当我尝试将QtMultimedia导入我的qml文件时遇到了以下错误:
无法为模块“QtMultimedia”加载插件:无法加载库 d:\ py35venvQt \ LIB \站点包\ PyQt5 \ Qt的\ QML \ QtMultimedia \ declarative_multimedia.dll: 找不到指定的模块。
main.qml:
import QtQuick 2.8
import QtQuick.Window 2.2
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.1
import QtMultimedia 5.6
Window {
id: root
visible: true
title: 'my pyqt app'
width: 1280
height: 720
}
main.py
if __name__ == '__main__':
def handleStatusChange(status):
if status == QQuickView.Error:
errors = appLabel.errors()
if errors:
print (errors[0].description())
myApp = QApplication(sys.argv)
appLabel = QQuickView()
appLabel.statusChanged.connect(handleStatusChange)
model = models.ActorModel(DB_PATH)
ctxt = appLabel.rootContext()
ctxt.setContextProperty('myModel', model)
appLabel.setSource(QUrl('./qml/main/main.qml'))
try:
sys.exit(myApp.exec_())
except:
print("Exiting")
如果没有QtMultimedia导入,一切正常,我也尝试了所有可能版本的QtMultimedia(5.0,5.1等)。此外,dll 确实存在在正确的路径中。
在线搜索解决方案时,我发现有些帖子说PyQt5不支持QtMultimedia,但我认为这些帖子太旧了。
如果有人能对这种情况有所了解,我将不胜感激, 谢谢。
编辑:Python版本3.5.2 PyQt版本5.8。
PyQt安装过程:新的virtualenv - > pip install pyqt5
Edit2 :尝试使用pip3 install pyqt5
重新安装到全新的虚拟环境,但仍然遇到同样的错误。
Edit3 :根据http://www.dependencywalker.com,在declarative_multimedia.dll所在的目录中找不到以下dll:
QT5MULTIMEDIA.DLL QT5QUICK.DLL QT5GUI.DLL QT5QML.DLL QT5CORE.DLL QT5MULTIMEDIAQUICK_P.DLL
除了QT5MULTIMEDIAQUICK_P.DLL,它们都出现在\Lib\site-packages\PyQt5\Qt\bin
目录
QT5MULTIMEDIAQUICK_P.DLL根本不存在。
我尝试将所有丢失的文件复制到\Lib\site-packages\PyQt5\Qt\qml\QtMultimedia
,看看它是否会有所不同。它没有。
我还尝试将PyQt 5安装到我正确的python 3.5安装(没有virtualenv)并运行我的代码。结果是一样的。
答案 0 :(得分:0)
我在Ubuntu上有类似的问题,我通过添加环境变量LD_LIBRARY_PATH=/home/slav/Apps/Qt5.9.2/5.9.2/gcc_64/lib
来解决我的问题。
“/home/slav/Apps/Qt5.9.2/5.9.2/gcc_64/lib
”这里我用QtInstaller安装了Qt