Pyinstaller: Как включить файл QML для простого приложения Pyside + QML?

У меня проблемы с генерацией EXE с помощью Pyinstaller. Моя самая большая проблема должна быть "включая файл qml". Я много пробовал, но все равно не получилось. Надеюсь, кто-то может показать мне, как должен быть написан файл спецификации, чтобы включить QML.

В общем, я хочу создать Windows Exe из моего приложения Pyside+QML. Но как?

main.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtDeclarative import QDeclarativeView

# Create Qt application and the QDeclarative view
app = QApplication(sys.argv)
view = QDeclarativeView()
# Create an URL to the QML file
url = QUrl('view.qml')
# Set the QML file and show
view.setSource(url)
view.setResizeMode(QDeclarativeView.SizeRootObjectToView)
view.show()
# Enter Qt main loop
sys.exit(app.exec_())

view.qml

import QtQuick 1.0

Rectangle {
    width: 200
    height: 200
    color: "red"

    Text {
        text: "Hello World"
        anchors.centerIn: parent
    }
}

1 ответ

Решение

Не уверен насчет PySide, но PyInstaller версии 2.1 поддерживает PyQt5. Я бы предположил, что общая процедура похожа.

Для PyQt5 поместите ваши qml-файлы в файл ресурсов, который вы затем скомпилируете, используя pyrcc5 (pyside-rcc). Затем вы импортируете сгенерированный модуль Python, и PyInstaller будет обрабатывать его как любой другой модуль.

Также можно напрямую включать файлы qml. Делая что-то вроде этого:

extrafiles = [('myfile.qml', os.path.join('path', 'to', 'myfile.qml'), 'DATA')]

...

coll = COLLECT( exe,
               a.binaries + extralibs,
               a.zipfiles,
               a.datas + extrafiles,
               ...

Возможно, вам также понадобится упаковать библиотеки qml из каталога qml, возвращаемого qmake -query QT_INSTALL_QML,

Другие вопросы по тегам