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 单一可执行文件的主要内容,如果未能解决你的问题,请参考以下文章
发布依赖于 C++ 库的 python 绑定的 python 可执行文件