使用 pyinstaller 在 tkinter 上出现问题

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

我在使用 pyinstaller 将代码转换为可执行文件时遇到问题。这是使用 tkfilebrowser 选择目录并打印它们的代码。如果你在 python 上尝试它,它运行时不会出现重大问题。但是,如果您尝试使其成为可执行文件,则当您尝试选择目录时,它不起作用,并出现错误:“_tkinter.TclError:无法打开”C:Users ... kfilebrowser ... ile.png “: 没有这样的文件或目录”。我将不胜感激任何帮助。下面是有关代码和错误的更多详细信息。

我的简单代码如下:

import tkinter as tk
import tkfilebrowser
root = tk.Tk()


canvas = tk.Canvas(root, height=600, width=1133, bg="black") 
canvas.pack()

frame = tk.Frame(root, bg="white")
frame.place(relwidth=0.96, relheight=0.6, relx=.02,rely=0.28)


dirs=[]
def get_directories():
    aux=[]
    aux.append(tkfilebrowser.askopendirnames(initialdir="/"))



    for i in aux[0]:
        dirs.append(i)
    print(dirs)
    return dirs

selectFolder = tk.Button(root, text= '1 - Select Folder', padx=5, pady=5, fg="white", 
bg="#263D42", command = get_directories)
selectFolder.pack(side=tk.RIGHT)

root.mainloop()

要将其转换为可执行文件,我在 cmd 上使用以下命令(我使用名称“test”保存文件):

 pyinstaller.exe --onefile --test.py

您可以在下图中看到错误。

python tkinter pyinstaller
2个回答
0
投票

问题是 pyinstaller 没有导入 tkfilebrowser 模块。您应该手动导入。 请使用以下代码在规范文件中添加 tkfilebrowser 文件夹的路径:

# test.spec file
pyz = PYZ(a.pure, a.zipped_data,
         cipher=block_cipher)            
a.datas += Tree("C:\\Users\\I_like_chocolate\\Miniconda3\\Lib\\site- 
packages\\tkfilebrowser\\", "tkfilebrowser") # !!! Path to add
再次运行之前,请务必先保存 test.spec 文件。然后,您应该使用以下命令在 cmd 中运行 test.spec 文件,而不是运行

pyinstaller.exe --onefile --test.py 命令:

# cmd
pyinstaller.exe test.spec

我认为这种方式更容易:

0
投票
import os import sys def resource_path(relative_path): try: base_path = sys._MEIPASS # after running the pyinstaller, if still looking # for temp folder then use sys._MEIPASS2 and if needed \\ instead of / for # all the path directories except Exception: base_path = os.path.abspath(".") return os.path.join(base_path, relative_path)

更换
"folder_names/file_names" 

resource_path("file_names/file_names")

在终端类型中:
pyinstaller.exe --onefile --windowed  --icon=your_image.ico Your_File.py

或 在 Windows CMD 中(在 cmd 中安装 pyinstaller 后)输入:
pyinstaller --onefile --windowed --icon=your_image.ico Your_File.py

可执行文件将位于名为“dist”的新文件夹中。
现在将所有依赖文件夹复制到“dist”文件夹中

运行 .exe,如果一切正常,则压缩文件夹以共享。

删除 Build 和 Dist 文件夹以及任何 .spec 文件。

更换

resource_path("folder_names/file_names")

返回
"folder_names/file_names"

如果找不到文件错误: 使用 MEIPASS 代替 MEIPASS2,反之亦然,然后使用 \ 代替 /(如果需要)。
要更进一步将其转换为安装程序文件,请使用“inno setup”软件。

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