-1

我正在尝试创建一个独立的 PySide6 应用程序可执行文件。我的设置是:

  • Python venv
  • 蟒蛇 3.9
  • PySide 6.1.0
  • 安装程序 4.3
  • 64 位 Windows 10

这是一个像这样的简单脚本:

from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import (QWidget, QApplication)
import sys

class Window(QWidget):

    def __init__(self):
        super(Window, self).__init__()
        self.setWindowTitle("hellooo")

if __name__== "__main__":
    app = QApplication([])
    win = Window()
    win.show()
    sys.exit(app.exec_())

该应用程序作为脚本运行良好。但是当我使用 Pyinstaller 将其转换为 exe 时,如下所示:

pyinstaller --onefile --debug=all --windowed --console hello.py

该应用程序不会立即启动并退出,并且不会出现任何有意义的错误。控制台输出是这样的:


[12384] LOADER: Setting sys.argv
[12384] LOADER: setting sys._MEIPASS
[12384] LOADER: importing modules from CArchive
[12384] LOADER: extracted struct
[12384] LOADER: callfunction returned...
[12384] LOADER: extracted pyimod01_os_path
[12384] LOADER: callfunction returned...
[12384] LOADER: extracted pyimod02_archive
[12384] LOADER: callfunction returned...
[12384] LOADER: extracted pyimod03_importers
[12384] LOADER: callfunction returned...
[12384] LOADER: Installing PYZ archive with Python modules.
[12384] LOADER: PYZ archive: PYZ-00.pyz
[12384] LOADER: Running pyiboot01_bootstrap.py
[12384] LOADER: Running pyi_rth_multiprocessing.py
[12384] LOADER: Running pyi_rth_certifi.py
[12384] LOADER: Running main_window.py
[408] LOADER: Back to parent (RC: -1073741819)
[408] LOADER: Doing cleanup

我的实际应用比这更复杂。我只是使用上面的示例来查看它是否可以作为 exe 工作,但两者都有相同的问题。

注意:我查看了本网站和其他地方的所有相关问题,但没有任何帮助。

注意:下面第一条评论中提到的关于 qt platform not found 的问题不是我遇到的问题。正如我在下面的评论中提到的那样,我已经解决了这个特定的错误。

4

1 回答 1

0

这是一个文档链接,您可以在其中找到一个表格,该表格总结了对不同打包工具的平台支持。

表:对打包工具的支持

根据该表,目前 Qt6 仅部分支持 PyInstaller。

但是 Qt 官网有一篇博,他们在其中写了关于Nuitka的文章:

编译 Python 应用程序是一项复杂的工作,许多 Qt for Python 用户一直在寻找从他们的 Python 应用程序部署独立二进制文件的方法。这就是我们在文档中创建所有工具教程的原因。

到目前为止,所有解决方案都基于打包 Python 代码并分发它的想法,但没有一个专注于编译代码,这里是 Nuitka 打勾的地方。

我们喜欢 Nuitka,我们相信您也会喜​​欢它!

如果这个名字对你来说是陌生的,简而言之,我们可以告诉你它是一个用 Python 编写的 Python 编译器,你可以在他们的网站上阅读更多内容。

我们感谢 Kay Hayen 为使 Nuitka 与 PySide 6.1 兼容所付出的所有时间,我们期待从您的经验中听到我们可以从这项共同努力中改进的地方。

我认为您可以尝试使用它而不是 PyInstaller。

于 2021-05-20T11:28:34.420 回答