我是Python和Stack Overflow的新手,所以我在提问时并不是很有经验,但我一直在搜索这个网站超过两个小时,我仍然无法找到问题的解决方案。我已经下载了cx_freeze并创建了我的setup.py文件:
from cx_Freeze import setup, Executable
import sys
import os
import tkinter
base = None
if sys.platform == 'win32':
base = None
executables = [Executable("Bounce.py", base=base)]
packages = ["tkinter"]
options = {
'build_exe': {
'packages': ["os", "tkinter"],
},
}
os.environ['TCL_LIBRARY'] = r'C:\Program Files\Python36\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Program Files\Python36\tcl\tk8.6'
includes = []
include_files =
[r"C:\Users\peeps\AppData\Local\Programs\Python\Python36\DLLs\tcl86t.dll",
r"C:\Users\peeps\AppData\Local\Programs\Python\Python36\DLLs\tk86t.dll"]
setup(
name = "Bounce",
version = "1.0",
description = "Test",
options = options,
executables = executables
)
我的实际python程序使用tkinter模块运行,我使用非tkinter python文件测试了我尝试使用的相同进程,该文件被完美地转换为.exe。当我使用cx_freeze运行此setup.py将Bounce.py转换为.exe时,.exe程序将打开并立即关闭。 Bounce.py文件没有打印到控制台,所以我不确定打开的窗口是用于控制台还是tkinter窗口(虽然窗口大小是控制台的窗口大小而不是tkinter窗口的大小指定为500乘400 px)因为它关闭得太快。有趣的是,当我更改setup.py文件的系统平台规范时:
if sys.platform == 'win32':
base = None
为:
if sys.platform == 'win32':
base = 'Win32GUI'
像某些指南说的那样,我实际收到一条错误消息:
https://i.stack.imgur.com/yA7ZG.png
我不知道该错误消息的含义或原因。如果您对如何解决这个问题有任何想法,请告诉我。我觉得我已经搜索过每个论坛,我是第一个遇到这个问题的人:/
答案 0 :(得分:0)
你有没有发现你刚刚创建include_files
而不是使用它?!
我确信你必须在询问之前搜索大量信息。因为你知道应该添加tcl8.6.dll
和tk86t.dll
以帮助tkinter运行(所以我不准备解释更多)
事实上,您只需将includes
和include_files
放入build_exe
。
这是我的代码:
from cx_Freeze import setup, Executable
import sys
import os
import tkinter
base = None
if sys.platform == 'win32':
base = "Win32GUI"
executables = [Executable("Bounce.py", base=base)]
packages = ["tkinter"]
options = {
'build_exe': {
'includes': ["os", "tkinter"],
'include_files': [r"C:\Users\peeps\AppData\Local\Programs\Python\Python36\DLLs\tcl86t.dll",
r"C:\Users\peeps\AppData\Local\Programs\Python\Python36\DLLs\tk86t.dll"]
},
}
os.environ['TCL_LIBRARY'] = r'C:\Program Files\Python36\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Program Files\Python36\tcl\tk8.6'
setup(
name="Bounce",
version="1.0",
description="Test",
options=options,
executables=executables
)
最后,我建议您将packages
更改为includes
,其效果优于packages