我已经搜索了很多年并尝试了一切。只是无法使其发挥作用。
我想做的是为我的小程序制作一个独立的exe程序,它使用Tkinter,用于Windows。到目前为止,我已经完成了使它成为一个exe,但是dist/
文件夹包括一个文件夹tcl/
和一个额外的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非常乐观,因为编写代码并寻求帮助似乎非常好,但这是我无法编写代码的东西。任何帮助表示赞赏。我是一个全新的人。
答案 0 :(得分:0)
我认为捆绑tkinter的方式有一个错误,你无法在python中优化或捆绑tkinter,取出这些选项并尝试运行它。
答案 1 :(得分:0)
Tkinter需要“tcl”文件夹中的任何内容。 Tkinter实际上是链接到一个Tcl解释器(这意味着你可以在Python中运行Tcl命令!)。因此,您需要Tcl解释器所需的一切(包括对Tk的支持)。
您收到的错误是编码错误,在您的选项中我看到"ascii": 1
。摆脱它,它应该解决问题。
此外,如果您计划为此编译程序创建安装程序,则没有真正的理由使用"compressed": 1
压缩程序(在分发时只需要很小)。
答案 2 :(得分:0)
您可以尝试使用以下位置提供的备用解决方案,该解决方案基本上使用安装程序方法。我也无法将这个tcl文件夹捆绑在exe中,所以我想这应该是一个更好的解决方案。