将 .py/.pyw 转换为 .exe [重复]

Posted

技术标签:

【中文标题】将 .py/.pyw 转换为 .exe [重复]【英文标题】:Convert .py/.pyw to .exe [duplicate] 【发布时间】:2020-06-16 11:04:06 【问题描述】:

我想从.py.pyw 文件创建.exe 文件。

我该怎么做? (cx-freeze)

【问题讨论】:

【参考方案1】:

编码要转换的文件

    下载cx_Freeze(如果你没有这样做)here。 新建一个Python文件并粘贴以下代码:

import os
import time
from tkinter import *
from tkinter.filedialog import askopenfile
from tkinter.scrolledtext import ScrolledText
from tkinter.messagebox import *

tk = Tk()
tk.title(".py -> .exe")
tk.resizable(0, 0)

f = None # file chosen

def browse():
    global f, btn
    try:
        f = askopenfile().name # get the path of the chosen file
        btn["text"] = os.path.basename(f)
    except:
        f = None

def convert():
    global f, btn, ver, des
    OK = False
    try:
        dots = 0
        for x in ver.get():
            if x == ".":
                dots += 1
            else:
                x = int(x)
        if dots < 4:
            OK = True # check the number of dots in the version
    except:
        showwarning("","The version must be int.int.int... with max 3 dots.")
    if OK:
        try:
            if f is None:
                showwarning("","You must choose a file to convert.")
                btn.focus()
            elif ver.get() == "":
                showwarning("","You must enter a version.")
                ver.focus()
            else:
                # create and fill the launch files
                with open("setup.py", "w") as f_:
                    f_.write("NAME = '" + f +
                        "'\nVERSION = '" + ver.get() +
                        "'\nDESCRIPTION = \"\"\"" + des.get(1.0, "end") +
                        "\"\"\"\n\nfrom cx_Freeze import setup, Executable\nsetup(name = NAME, version = VERSION, description = DESCRIPTION, executables = [Executable(NAME)])")
                with open("start.bat", "w") as f_:
                    f_.write("py setup.py build")
                os.system("start.bat") # run the launch file

                os.remove("setup.py")  # remove the created files
                os.remove("start.bat") #
                showinfo("Information","End. Your exe file is in folder 'build'.")
        except:
            showerror("Error","Unknown error detected.") # any unknown error

# GUI
Label(text="File to convert").grid(column=0, row=0, sticky="w")
btn = Button(text="Browse...", command=browse)
btn.grid(column=1, row=0)
Label(text="Version").grid(column=0, row=2, sticky="w")
ver = Entry(width=23)
ver.grid(column=1, row=2, padx=5)
ver.insert(0, "1.0")
Label(text="Description").grid(column=0, row=3, sticky="w")
des = ScrolledText(width=15, height=5, wrap=WORD)
des.grid(column=1, row=3)
Label(text="Convert to .exe").grid(column=0, row=4, sticky="w")
Button(text="Convert", command=convert).grid(column=1, row=4, pady=5)

tk.mainloop()

    运行代码。选择一个文件。点击convert按钮。

    命令提示符窗口可让您查看进度。


错误

    命令提示符在很短的时间内保持打开状态

改变

  with open("start.bat", "w") as f_:
      f_.write("py setup.py build")

通过

  with open("start.bat", "w") as f_:
      f_.write("py setup.py build")
      f_.write("pause")

然后,在互联网上搜索错误。

检查您是否选择了.py.pyw 文件。

    未创建文件夹“build”
检查要转换的文件的路径:它是否包含重音字符、一些空格? >> 例如,将文件放在桌面或闪存驱动器中以避免它。 检查描述:它是否包含重音字符?删除它们。 你安装cx_Freeze了吗?
    您无法打开您的 .exe 文件
如果您的代码需要其他文件,例如图像、音乐,请将它们复制到当前文件夹中。 您检查过您的文件吗?它是否包含一些错误? 如果你使用tkinter:你循环窗口了吗?

【讨论】:

以上是关于将 .py/.pyw 转换为 .exe [重复]的主要内容,如果未能解决你的问题,请参考以下文章

vdi转vmdk VirtualBox与VMware硬盘格式转换及使用方法

vdi转vmdk VirtualBox与VMware硬盘格式转换及使用方法

在我的 C# 应用程序中使用外部 .exe [重复]

保留现有列并将行转换为列[重复]

怎么把图片文件转成xml文件

10进制转换ascii