Python 3.4 GUI 单一可执行文件

Posted

技术标签:

【中文标题】Python 3.4 GUI 单一可执行文件【英文标题】:Python 3.4 GUI single executable 【发布时间】:2015-03-25 12:38:50 【问题描述】:

今天我开始学习python。我只用过 php 做各种事情,从不费心构建 exe 文件。

使用一些互联网 Python 编程教程和一些我自己的编辑,我想出了一个随机的“你点击了多少次”应用程序,如下所示

import winsound
from tkinter import *

class Application(Frame):

    def __init__(self, master):
        Frame.__init__(self,master)
        self.pack()
        self.counts = 0
        self.create_widgets()

    def create_widgets(self):
        Label(self, text = "Test Label").pack()
        self.button = Button(self, text = "click", command = self.update_text).pack()

        self.result = Label(self, text = "Clicked 0 times")
        self.result.pack()

    def update_text(self):
        self.counts += 1

        self.result["text"] = "Clicked " + str(self.counts) + " times"

        winsound.PlaySound('sound1.wav', winsound.SND_FILENAME | winsound.SND_ASYNC)


root = Tk()
root.title("Title")
root.geometry("300x120")
app = Application(root)

root.mainloop

应用程序工作正常,但是当我出于方便的原因尝试将其编译为单个 exe 文件时出现问题,因为我打算编写小的“让事情变得更容易”的程序。 Py2Exe 根本不想用 bundle_files 1 编译程序。 PyInstaller 确实使用 --onefile 编译了它,但在执行时,应用程序只会给您带来 tkinter 错误。

有没有办法用 GUI 创建一个小的 exe 文件,还是死路一条? 我不会撒谎,但我真的很喜欢学习 python 并能够在 web 和桌面应用程序中使用它的想法,这在 PHP 中是不可能的。

我正在使用 Python 3.4,并测试了 Python 3.3 - 3.4 的内置 py2exe 和开发 PyInstaller。

编辑: py2exe 的示例 setup.py 和错误

from distutils.core import setup
import py2exe
setup( windows=["script": "text.py"],
       options = "py2exe": "bundle_files": 1
)

错误

C:\Users\SEJBR\Desktop\Python>python setup.py py2exe
running py2exe

  1 missing Modules
  ------------------
? readline                            imported from cmd, code, pdb
OOPS: tkinter 2

PyInstaller 编译错误

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named 'Tkinter'
2515 ERROR: TCL/TK seams to be not properly installed on this system

【问题讨论】:

你在py2exe中是否使用了window参数而不是console? 是的。我在 setup 中使用了 windows,在 setup>options 中使用了 bundle_files:1,py2exe 给出了 Missing Module OOPS: tkinter 2 error 由于 bundle_files 低于 2。但是当 bundle_files 高于 1 时,就没有谈论单个可执行文件了。编辑了问题并添加了示例 py2exe setup.py 和我遇到的错误。 我不熟悉py2exe,但是使用PyInstaller,你遇到了什么错误? 我无法重现昨天编译文件时遇到的错误。现在在编译期间我有一个错误,我添加到问题中。该文件编译但不输出任何内容。我猜当前 PyInstaller 错误是由于 Python 3.X 从 Tkinter 更改为 tkinter? 什么是“内置 py2exe”? 【参考方案1】:

解决方法很简单。我降级到 Python 2.7.9,PyInstaller 完美地编译了应用程序,没有任何问题。 我刚用过

from __future__ import print_function
from __future__ import division

使用 Python 3.X 打印功能并应用除法更改。如果有人提出真正的解决方法,请回答问题。

【讨论】:

以上是关于Python 3.4 GUI 单一可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

Python如何打包EXE可执行文件

python可执行文件警报防病毒

cx_Freeze 和 Python 3.4

发布依赖于 C++ 库的 python 绑定的 python 可执行文件

cx_freeze 可执行文件无法与 Geckodriver 配合使用

cx_freeze 不允许我用 librosa Python3 制作 gui