如何将Python 2.7(使用Tkinter)项目转换为独立exe?
我搜索了很久,试了很多方法,就是无法让它正常工作。
我想做的是把我用Tkinter写的小程序打包成一个独立的exe文件,适用于Windows。到目前为止,我已经成功把它做成exe文件了,不过生成的dist/
文件夹里有一个tcl/
文件夹,还有一个额外的exe文件。我想知道怎么去掉这些东西。
另外,我还没能做出一个能正常运行的exe文件。这是我的setup.py
文件:
from distutils.core import setup
import py2exe
import sys
if len(sys.argv) == 1:
sys.argv.append("py2exe")
setup(
options = {
"py2exe": {"compressed": 1, "optimize": 2, "ascii": 1, "bundle_files": 1, "includes": ["Tkinter"]}
},
zipfile = None,
windows = [
{
"script": "hello.py",
"icon_resources": [(0, "icon_16.ico")]
}
]
)
用这段代码运行后,我立刻就收到一个提示:“这个程序已经停止响应”。
如果我去掉“ascii”这个选项,程序就无法运行,还会留下一个日志文件:
Traceback (most recent call last):
File "hello.py", line 1, in <module>
File "zipextimporter.pyo", line 82, in load_module
File "Tkinter.pyo", line 38, in <module>
File "zipextimporter.pyo", line 82, in load_module
File "FixTk.pyo", line 56, in <module>
File "FixTk.pyo", line 23, in convert_path
LookupError: unknown encoding: mbcs
我对Python非常乐观,因为它看起来很容易上手,也能找到很多帮助,但现在我遇到的问题让我觉得无从下手。任何帮助都非常感谢。我还是个完全的新手。
3 个回答
0
你可以试试下面这个地方提供的另一种解决方案,基本上是用安装程序的方法。我也没能把那个tcl文件夹打包进exe文件里,所以我觉得这个方法应该更好。
0
在“tcl”文件夹里的东西是Tkinter所需要的。Tkinter其实是和一个Tcl解释器连接在一起的(这意味着你可以在Python中运行Tcl命令!)。所以,你需要Tcl解释器所需的所有东西(包括对Tk的支持)。
你遇到的错误是编码错误,我看到你的选项里有"ascii": 1
。把这个去掉,问题应该就能解决了。
另外,如果你打算为这个编译好的程序制作安装包,其实没有必要用"compressed": 1
来压缩程序(它只在分发时需要小巧一些)。
0
我觉得在打包tkinter的时候有个问题,你不能对tkinter进行优化或者打包,去掉那些选项然后试着运行一下吧。