Cur*_*984 5 python qt pyqt qml qtmultimedia
我正在尝试学习 PyQt5 + qml,到目前为止我尝试过的一切都很好,但是在尝试将 QtMultimedia 导入我的 qml 文件时遇到了一个障碍,导致以下错误:
无法为模块“QtMultimedia”加载插件:无法加载库 D:\py35venvQt\lib\site-packages\PyQt5\Qt\qml\QtMultimedia\declarative_multimedia.dll:找不到指定的模块。
主.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
}
Run Code Online (Sandbox Code Playgroud)
主文件
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")
Run Code Online (Sandbox Code Playgroud)
如果没有 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)并运行我的代码。结果是一样的。
我在 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