Python 2.7(与Tkinter)项目成为一个独立的exe?

时间:2011-09-17 15:49:54

标签: python tkinter py2exe python-2.7

我已经搜索了很多年并尝试了一切。只是无法使其发挥作用。

我想做的是为我的小程序制作一个独立的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非常乐观,因为编写代码并寻求帮助似乎非常好,但这是我无法编写代码的东西。任何帮助表示赞赏。我是一个全新的人。

3 个答案:

答案 0 :(得分:0)

我认为捆绑tkinter的方式有一个错误,你无法在python中优化或捆绑tkinter,取出这些选项并尝试运行它。

答案 1 :(得分:0)

Tkinter需要“tcl”文件夹中的任何内容。 Tkinter实际上是链接到一个Tcl解释器(这意味着你可以在Python中运行Tcl命令!)。因此,您需要Tcl解释器所需的一切(包括对Tk的支持)。

您收到的错误是编码错误,在您的选项中我看到"ascii": 1。摆脱它,它应该解决问题。

此外,如果您计划为此编译程序创建安装程序,则没有真正的理由使用"compressed": 1压缩程序(在分发时只需要很小)。

答案 2 :(得分:0)

您可以尝试使用以下位置提供的备用解决方案,该解决方案基本上使用安装程序方法。我也无法将这个tcl文件夹捆绑在exe中,所以我想这应该是一个更好的解决方案。

http://www.py2exe.org/index.cgi/SingleFileExecutable