【发布时间】:2021-04-04 22:24:15
【问题描述】:
我正在尝试使用打开 tkinter GUI 的 Pyinstaller 构建一个单文件 EXE 文件。但出于某种原因,EXE 在运行时不会打开任何 tkinter 窗口。我写了一个快速代码来测试 Pyinstaller 是否有 tkinter 模块的问题。它看起来像这样:
import tkinter
root= tkinter.Tk()
canvas1 = tkinter.Canvas(root, width = 300, height = 300)
canvas1.pack()
def hello ():
label1 = tkinter.Label(root, text= 'Hello World!', fg='green', font=('helvetica', 12, 'bold'))
canvas1.create_window(150, 200, window=label1)
button1 = tkinter.Button(text='Click Me',command=hello, bg='brown',fg='white')
canvas1.create_window(150, 150, window=button1)
root.mainloop()
当 tkinter 是唯一被导入的模块时,Pyinstaller 构建的 EXE 文件运行没有问题。但是当我添加我的 GUI 程序使用的所有其他导入时,编译的单文件 EXE 不再打开 tkinter 窗口:
import tkinter
import tkinter.filedialog
import os
import PIL
import numpy as np
import math
import win32api
import ctypes
import peakutils
import matplotlib
import skimage.measure
import scipy
import astropy.modeling
import cv2
import sklearn.neighbors.NearestNeighbors
import imutils
import sys
...
我阅读了导入模块的文档,其中有一些重复的依赖项(例如astropy.modeling 导入scipy)。是这种双重依赖导致 Pyinstaller 无法构建工作的 EXE,还是有其他原因?我意识到有很多导入的模块,这也是EXE不起作用的原因吗?我怎样才能解决这个问题?我还应该补充一点,Pyinstaller 在构建任何一个 EXE 时都没有返回任何错误。
【问题讨论】:
标签: python tkinter pyinstaller