无法加载模块“QtMultimedia”的插件:无法加载库D:\ py35venvQt \ lib \ site-packages \ 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
编辑2:尝试重新安装到完全新的虚拟环境,使用pip3 install pyqt5
仍然出现相同的错误。
编辑3:根据 http://www.dependencywalker.com ,声明式多媒体.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安装中(没有虚拟环境),然后运行我的代码。结果是一样的。
pip install pyqt5
安装了它,就这样。 - Curtwagner1984