尝试打开使用 Tkinter 的项目的 Pyinstaller 制作的 .exe 时出现问题

问题描述 投票:0回答:1

本质上,我正在努力使用 Tkinter GUI 和其他几个库来开发应用程序。目标是最终在 GitHub 上发布该应用程序,让我的同学下载并测试它,因为这是一项大学作业。为了实现这一目标,我正在使用 PyInstaller。

在我的项目中,main.py 作为应用程序的入口点。我使用以下命令调用 PyInstaller:

pyinstaller --onefile main.py

该过程似乎运行顺利,生成 build 和 dist 目录没有任何问题。

但是,我遇到了异常情况。当我通过 VSCode 终端执行 dist/main.exe 时,应用程序按预期运行。但是,如果我尝试通过双击 .exe 文件打开它,我会遇到以下错误:

Traceback (most recent call last):
  File "main.py", line 4, in <module>
  File "app.py", line 21, in __init__
  File "app.py", line 28, in entry_show
  File "Frames\intro.py", line 8, in __init__
  File "Frames\intro.py", line 13, in create_widgets
  File "PIL\Image.py", line 3247, in open FileNotFoundError: [Errno 2] No such file or directory: 'FuelTrackRootTitle.png' [1856] Failed to execute script 'main' due to an unhandled exception!

最初,当我遇到此回溯时,我使用的图像文件位于我运行 PyInstaller 命令的项目目录内的一个文件夹中。因此,我不认为问题在于图像文件位于其他地方。

请注意,我对每个文件都使用相对路径。

我收到错误的文件如下:

    import tkinter as tk
    from tkinter import ttk
    from PIL import Image, ImageTk  

    class IntroFrame(tk.Frame):
    def __init__(self, parent):
        super().__init__(parent, width=500, height=600, background='white')
        self.create_widgets()

    def create_widgets(self): # Agrega el logo, titulo y el texto de creador a la intro

        # Titulo
        title_image = Image.open("FuelTrackRootTitle.png")
        title_image_tk = ImageTk.PhotoImage(title_image)
        titulito = ttk.Label(self, image=title_image_tk, background='white')
        titulito.image = title_image_tk
        titulito.place(relx=0.5, rely=0.7, anchor='center')

        # Logo
        icon_image = Image.open("FuelTrackIconImage.png").resize((300,300))
        icon_image_tk = ImageTk.PhotoImage(icon_image)
        logo = ttk.Label(self, image=icon_image_tk, background='white')
        logo.image = icon_image_tk
        logo.place(relx=0.5, rely=0.36, anchor='center')

此时,我刚刚尝试将 .png 文件放在 images 文件夹之外,并与项目内的 main.py 处于同一级别,还尝试了一种涉及模块 sys 和 os 的解决方案,但这些东西都不起作用我。

如果有人能帮助我解决这个问题,那对我会有很大帮助。

提前致谢:)。

python tkinter path python-imaging-library pyinstaller
1个回答
0
投票

这个答案解决了我的问题https://stackoverflow.com/a/78290574/20782948猜你可能想尝试创建一个setup.py文件并在pip中安装cx_Freeze

© www.soinside.com 2019 - 2024. All rights reserved.