簡體   English   中英

使用 PyInstaller 打包的 PySide6 應用程序啟動時沒有錯誤

[英]PySide6 app packaged with PyInstaller not starting with no errors

我正在嘗試創建一個獨立的 PySide6 應用程序可執行文件。 我的設置是:

  • Python venv
  • Python 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

該應用程序不會立即啟動並退出,並且不會出現任何有意義的錯誤。 控制台 output 是這樣的:


[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 平台的問題不是我遇到的問題。 正如我在下面的評論中提到的那樣,我已經解決了這個特定的錯誤。

這是一個文檔鏈接,您可以在其中找到一個表格,該表格總結了對不同打包工具的平台支持。

表:對打包工具的支持

根據該表,目前 Qt6 僅部分支持 PyInstaller。

但是 Qt 官網有一篇博文,他們寫了關於Nuitka的文章:

Compiling Python applications is complicated work, and many Qt for Python users are always looking for ways to deploy standalone binaries from their Python applications. 這就是我們在文檔中創建所有工具教程的原因。

到目前為止,所有的解決方案都是基於打包 Python 代碼並分發它的想法,但沒有一個專注於編譯代碼,這里是 Nuitka 打勾的地方。

我們喜歡 Nuitka,我們相信您也會喜歡它!

如果這個名稱對您來說是新名稱,簡而言之,我們可以告訴您它是用 Python 編寫的 Python 編譯器,您可以在他們的網站上閱讀更多信息。

我們感謝 Kay Hayen 為使 Nuitka 與 PySide 6.1 兼容所付出的所有時間,我們期待從您的經驗中聽到我們可以從這項共同努力中改進的地方。

我認為您可以嘗試使用它而不是 PyInstaller。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM