簡體   English   中英

Pyinstaler 為什么我的 exe 文件在我的腳本運行時沒有運行?

[英]Pyinstaler why does my exe file not run while my script is?

首先,我是 python 的新手,很抱歉最終丟失了信息。

我目前正在嘗試將正在運行的腳本編譯成 exe 文件。 正如我所提到的,該腳本在 python(anaconda 3)中完美運行。 我使用 pyinstaller 和 auto-py-tp-exe gui。 它將我的文件編譯成一個exe,但是當我嘗試運行它時它不起作用。

我使用了以下選項:

pyinstaller --noconfirm --onedir --windowed  ""

當然是文件路徑。 我收到以下錯誤:

   Traceback (most recent call last):
  File "MAIN_INTERFACE.py", line 2673, in <module>
  File "MAIN_INTERFACE.py", line 343, in __init__
  File "tkinter\__init__.py", line 2790, in create_image
  File "tkinter\__init__.py", line 2776, in _create
_tkinter.TclError: image "pyimage10" doesn't exist

有人知道該怎么做嗎?

如果沒有源代碼,我實際上無法准確判斷,但這似乎是 python 垃圾收集器的問題(聽起來可能有點嚇人,但實際上並非如此):

我可以想象,您的代碼看起來像這樣:

my_tkinstance = Tk()

my_image = PhotoImage("path_to_image")
my_label = Label(my_tkinstance, image=my_image)
my_label.pack()

my_tkinstance.mainloop()

如果我們仔細考慮,解釋器會處理這段代碼,我們可以得出這樣的結論:

  1. 創建 Tkinter 實例。
  2. 從指定路徑讀入圖片
  3. 使用圖像創建 label
  4. 將label裝屏
  5. 顯示 tkinter 實例。 但這里有線索:在最后一行代碼(第 5 步)完成后,python 所謂的垃圾收集器會檢查您的變量並認為“嗯。這個圖像變量似乎不再使用了,我會提前 go 和刪除它”。

為了防止這種情況發生,您必須像這樣修改代碼:my_tkinstance = Tk()

my_image = PhotoImage("path_to_image")
my_label = Label(my_tkinstance, image=my_image)
my_label.image = my_image
my_label.pack()

my_tkinstance.mainloop()

通過這種方式,您可以在 python 代碼(可以這么說)的不同部分中引用圖像,並且垃圾收集器不會刪除圖像。

希望這可以幫助:)

暫無
暫無

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

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