Python PyInstaller+;PyQt5+;QML:QtQuick未安装
我正在尝试使用以下命令使用pyinstaller、PyQt5和qml(参见下面的文件)构建一个应用程序Python PyInstaller+;PyQt5+;QML:QtQuick未安装,python,qml,pyinstaller,pyqt5,Python,Qml,Pyinstaller,Pyqt5,我正在尝试使用以下命令使用pyinstaller、PyQt5和qml(参见下面的文件)构建一个应用程序 pyrcc5 pyqt5_qml.qrc > pyqt5_qml_qrc.py pyinstaller -w -F --noupx pyqt5_qml.py (OSX 10.11.1、python 3.5.0、qt 5.5.1、pyinstaller 3.0) pyqt5_qml.py运行正常(打开“Hello world!”窗口),但内置应用程序抱怨未安装模块“QtQuick”2.4
pyrcc5 pyqt5_qml.qrc > pyqt5_qml_qrc.py
pyinstaller -w -F --noupx pyqt5_qml.py
(OSX 10.11.1、python 3.5.0、qt 5.5.1、pyinstaller 3.0)
pyqt5_qml.py运行正常(打开“Hello world!”窗口),但内置应用程序抱怨未安装模块“QtQuick”2.4版。我猜这个模块还没有包含在内置的应用程序中,但我不知道如何告诉pyinstaller去做
pyqt5_qml.py:
import os, sys
from PyQt5 import QtCore, QtWidgets, QtQml
import pyqt5_qml_qrc
def main():
global app
app = QtWidgets.QApplication(sys.argv)
engine = QtQml.QQmlApplicationEngine()
engine.load(QtCore.QUrl('qrc:/hello.qml'))
root = engine.rootObjects()[0]
root.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
hello.qml:
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Layouts 1.1
ApplicationWindow {
title: qsTr("Window")
Rectangle {
width: 360
height: 360
Text {
anchors.centerIn: parent
text: "Hello World"
}
MouseArea {
anchors.fill: parent
onClicked: {
Qt.quit();
}
}
}
}
pyqt5_qml.qrc:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>hello.qml</file>
</qresource>
</RCC>
你好,qml
对于我来说,在Windows上,这最终是没有设置的QML2\u导入\u路径环境变量。一旦我将其设置为“C:\Python35\Lib\site packages\PyQt5\qml”,它就工作了 使用PyInstaller时,我注意到它无法捆绑QML依赖项,然后冻结应用程序。您可以通过从python站点包(\Lib\site packages\PyQt5\Qt\qml
)中复制QtQuick
和QtQuick.2
文件夹并将其放置在冻结的可执行文件附近,来检查这是否也是您的情况:
QtQuick
QtQuick.2
your_executable.exe
如果应用程序在此之后工作,您可以编辑.spec
文件以自动绑定这些文件夹(pyinstaller在第一次运行时生成.spec
-文件)
然后尝试对这个规范文件运行pyinstaller
:pyinstaller pyqt5_qml.spec
我希望这能有所帮助
我也在努力解决同样的问题
几个小时后,我做了一些简单的事情,但对我来说,它奏效了
在mymain.py中,我指的是加载我添加的QML文件的文件
import PyQt5.QtQuick
然后运行pyinstaller:
pyinstaller -F - -onefile main.py
它起作用了你有过这样的经历吗?没有,没有任何暗示……我面临着同样的问题。我已经尝试过Linux和Windows,并且对QT、Python和PyQT一般来说都是新手,所以有点粗糙。
pyinstaller -F - -onefile main.py