将使用多个图像资源的tkinter脚本转换为.exe | image 没有那个文件或目录

Convert tkinter script which uses multiple image resources to .exe | image no such file or directory

我正在尝试创建脚本的可执行文件,但 运行.exe 找不到图像。我已经尝试了一个文件和多个文件并将图像粘贴到里面但是它不起作用。

def resource_path(relative_path):
    try:
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")

    return os.path.join(base_path, relative_path)

root = Tk()
root.title("Tai Project")
root.geometry("600x600")
root.resizable(0, 0)

img = PhotoImage(file=resource_path("Tai_Project\ccc.png"))
img_opo = tkinter.PhotoImage(file=resource_path("Tai_Project\opo.png"))
img_label = tkinter.PhotoImage(file=resource_path("Tai_Project\labeltest.png"))

.spec

 a = Analysis(
    ['Tai_Interface.py'],
    pathex=['C:\Users\Usuario\Desktop\Python1\Tai_Project'],
    binaries=[],
    datas=[('ccc.png','.'),('opo.png','.'),('labeltest.png','.')],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    [],
    name='Tai_Interface',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=False,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

错误信息:

_tkinter.TclError: 无法打开“C:\Users\Usuario\AppData\Local\Temp_MEI88482\Tai_Project\ccc.png”: 没有那个文件或目录

我的路线是: C:\Users\Usuario\Desktop\Python1\Tai_Project

_tkinter.TclError: couldn't open "C:\Users\Usuario\AppData\Local\Temp_MEI88482\Tai_Project\ccc.png": no such file or directory

这意味着你的 spec 文件写错了,你的文件没有包含在你的临时目录中。

pathex 是您的 python.exe 文件夹(不是项目)的路径

datas 必须将相对 TEMP 目录路径和绝对路径连接到文件

例如:

我有绝对路径的文件:

C:\Users\user\PycharmProjects\project\file.json

在代码中我是这样引用它的:

resource_path("file.json")

规范文件必须有:

datas = [("file.json","C:\Users\user\PycharmProjects\project\file.json", "DATA")]