Python PyInstaller+;PyQt5+;QML:QtQuick未安装

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

我正在尝试使用以下命令使用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版。我猜这个模块还没有包含在内置的应用程序中,但我不知道如何告诉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