【问题标题】:Error compiling with pyinstaller, "Error loading python38.dll"使用 pyinstaller 编译时出错,“加载 python38.dll 时出错”
【发布时间】:2020-09-13 08:12:12
【问题描述】:

我正在编译我的第一个 GUI 应用程序,我正在使用 pyinstaller,因为它是我所知道的,它会生成 .exe 文件。 我在 AMD 64 位的 win32 上使用 Python 3.8.1 (tags / v3.8.1: 1b293b6, Dec 18 2019, 22:39:24) [MSC v.1916 32 bit (Intel)]。

from tkcalendar import Calendar, DateEntry
from tkinter.ttk import * 
from tkinter import messagebox
from tkinter import *
import datetime
import sqlite3

然后当我去运行exe文件时,我得到了这个错误,请你告诉我它指的是什么或者我在哪里可以找到错误的内容或者是否有另一种更有效的编译方法。

这是编译器生成的文字,看不懂,看不出来是不是描述了我这里的错误。

在此先感谢您的帮助、问候和感谢。如果您可以推荐我继续使用 pyinstaller 或者如果您可以推荐其他编译器,我已经尝试编译了 1 周,并且由于我不前进而感到停滞不前,我没有收到错误。

【问题讨论】:

  • 我认为您正在运行在build 中找到的exe。尝试运行dist
  • 事实是,在我绝望中我已经运行了它为我生成的所有 exe,但是如果我进入 Sub Dist 并运行那里的 exe,并且错误错误继续出现跨度>

标签: python python-3.x tkinter pyinstaller


【解决方案1】:

我使用 cx_Freeze 并制作了一个将 py 转换为 exe 的 GUI:

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

def browse():
    global f, btn
    try:
        f = askopenfile().name # get the py 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(): # check the number of dots in version
            if x == ".":
                dots += 1
            else:
                x = int(x)
        if dots < 4:
            OK = True
    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:
                with open("setup.py", "w") as f_: # fill a new file setup.py (installer)
                    f_.write("NAME = '" + f +
                        "'\nVERSION = '" + ver.get() +
                        "'\nDESCRIPTION = \"\"\"" + des.get(1.0, "end") +
                        "\"\"\"\nFILENAME = '" + f +
                        "'\n\nfrom cx_Freeze import setup, Executable\nsetup(name = NAME, version = VERSION, description = DESCRIPTION, executables = [Executable(FILENAME)])")
                with open("setup.bat", "w") as f_: # fill a new file setup.bat (installation launcher)
                    f_.write("py setup.py build")
                os.system("setup.bat")
                btn["text"] = "Browse..."
                f = None
                os.remove("setup.py")  # remove files created in this script
                os.remove("setup.bat") #
                showinfo("Information","End. Your exe file is in folder 'build'.")
        except:
            showerror("Error","Error detected.")


# create 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()
ver.grid(column=1, row=2, padx=5)

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()

别忘了安装 cx_Freeze !

【讨论】:

  • 你好 D-00,安装 cx_Freeze,脚本,当我编译一个简单的小脚本时,它工作正常,它生成 exe 并很好地执行它,但是使用 GUI 虽然它生成了 exe,屏幕出现黑色并消失,我看不到它生成的错误不再显示.dll文件丢失,有一些方法可以查看错误发生的位置。非常感谢脚本和帮助。
  • 可能是我的Python版本和我从cx_Freeze下载的不兼容,提前谢谢解答
猜你喜欢
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
  • 2021-12-12
相关资源
最近更新 更多