【发布时间】:2019-07-26 17:51:59
【问题描述】:
我用 Python 编写了一个程序,并用 cx-Freeze 创建了一个可执行文件。我必须在 setup.py 中包含 tk 和 tcl 库以及一些图像,才能使可执行文件正确运行。
我将这些文件链接到我计算机上的绝对路径,认为 cx-freeze 会将这些文件复制到最终的可执行文件夹,以便它成为自己包的一部分。
该程序在我的 PC 上完美运行,但无法在我同事的 PC 上运行。
当 .exe 无法运行时,包括 tcl 和 tk 库以及图像是我的故障排除过程的一部分。我不知道下一步该做什么。
'''This is my setup.py file.'''
from cx_Freeze import setup, Executable
import sys
import os
includes = []
include_files =
[r"C:\Users\jchoujaa\AppData\Local\Programs\Python\Python37\DLLs\tcl86t.dll",
r"C:\Users\jchoujaa\AppData\Local\Programs\Python\Python37\DLLs\tk86t.dll",
r"C:\Users\jchoujaa\Desktop\Code\STARx App\Savvy Logger\Developer\Imaging\savron.png",
r"C:\Users\jchoujaa\Desktop\Code\STARx App\Savvy Logger\Developer\Imaging\s-icon.ico",
r"C:\Users\jchoujaa\Desktop\Code\STARx App\Savvy Logger\Developer\Imaging\STAR.png"]
os.environ['TCL_LIBRARY'] = r'C:\Users\jchoujaa\AppData\Local\Programs\Python\Python37\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\jchoujaa\AppData\Local\Programs\Python\Python37\tcl\tk8.6'
base = 'Win32GUI' if sys.platform == 'win32' else None
setup(name = "SavvyLogger",
version = "1.0",
description = "Logger Interpreter",
options={"build_exe": {"includes": includes, "include_files": include_files, 'packages': ['pandas', 'numpy']}},
executables = [Executable("SavvyLogger.py", base=base)])
这是我的同事在尝试打开我的可执行文件时收到的错误: enter image description here
【问题讨论】:
-
错误确实提到了
s-icon.ico未定义。您是否与您的同事再次确认该文件确实包含在内?而且您是否在代码中硬编码了ico文件的路径,而不是相对路径? -
s-icon.ico 包含在我发送给他的文件夹中。但是,是的,它是硬编码的: pre.wm_iconbitmap = (desktop + "Code\\STARx App\\Savvy Logger\\Developer\\Imaging\\s-icon.ico") 我将如何为此创建相对路径?
-
如果您再次仔细查看错误 - 路径上存在差异。定义的路径链接到
C:\Users\bboulay...,但从C:\Users\jchoujaa...引发了错误。 -
如果你把
ico文件和你的初始py文件放在同一个位置,你可以只放pre.wm_iconbitmap = "s-icon.ico"。 -
我要试试,谢谢亨利!
标签: python python-3.x tkinter tk cx-freeze