1

我设置了一个 virtualenv 并安装了 pyqt5(PyQt5-5.7-cp35-cp35m-manylinux1_x86_64.whl):

virtualenv -p /usr/bin/python3.5 .
source bin/activate
pip install pyqt5

我创建了一个 basic.qml 文件:

import QtQuick 2.7
import QtQuick.Controls 2.0

Rectangle {
    width: 300
    height: 100
    color: "red"
}

并尝试将其加载到我的python代码中:

import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtQuick import QQuickView

if __name__ == '__main__':
    myApp = QApplication(sys.argv)

    view = QQuickView()
    view.setSource(QUrl('basic.qml'))
    view.show()

    sys.exit(myApp.exec_())

它失败了

file:///[...]/main.qml:2:1: plugin cannot be loaded for module "QtQuick.Controls": Cannot load library /[virtualenv]/lib/python3.5/site-packages/PyQt5/Qt/qml/QtQuick/Controls.2/libqtquickcontrols2plugin.so: (libQt5QuickTemplates2.so.5: Can't open shared object file: File or directory not found) 
     import QtQuick.Controls 2.0 
     ^

Process finished with exit code 0

我检查了。它抱怨的这个文件实际上并不存在。但是我该如何安装呢?PyQt5 是否完全支持 QtQuickControls2?

如果我将 basic.qml 中的导入从 切换import QtQuick.Controls 2.0import QtQuick.Controls 1.2,它可以工作。但我想使用新的控件。

4

1 回答 1

1

这看起来像 PyQt5 中的一个错误。包装缺少libQt5QuickTemplates2.solibQt5QuickControls2.so

希望 PyQt 5.7 包中包含的 Qt 5.7 构建和 qt.io 上可用的官方 Qt 5.7 构建以完全二进制兼容的方式构建,一种可能是从 qt.io 下载并安装 Qt 5.7,然后复制缺少库到您的 virtualenv 中。例如:

$ cp ~/Qt/5.7/gcc_64/lib/libQt5QuickTemplates2.* path/to/lib/python3.5/site-packages/PyQt5/Qt/lib
$ cp ~/Qt/5.7/gcc_64/lib/libQt5QuickControls2.* path/to/lib/python3.5/site-packages/PyQt5/Qt/lib
于 2016-09-09T21:46:13.347 回答