从 python 脚本创建的可执行文件仅启动 DOS window

Executable created from python script only fires up a DOS window

我想将名为 DEEPEM_GANTT.py 的 python 脚本转换为可执行文件。 我在网上看了几个教程,决定使用 pyinstaller 来完成这个操作。

我继续使用 pip 在我的 Python 虚拟环境中安装了 pywin32 和 pyinstaller:

pip install pywin32
pip install pyinstaller

我第一次尝试转换我的脚本 (pyinstaller --onefile DEEPEM_GANTT.py) 返回了一个错误 (FFi' object has no attribute 'unpack') 但在更新 cffi 之后我能够生成一个名为 DEEPEM_GANTT.exe 的 .exe 文件。

唉,当双击这个文件时,它会启动 DOS window 而不是启动它本应打开的 tkinter 对话框。我究竟做错了什么?任何帮助将不胜感激。


我的脚本转载如下。该脚本旨在根据使用多个传感器获取的数据创建甘特图。从 Python 终端启动时该脚本运行良好:

import scipy.io
import os 
import plotly.figure_factory as ff
from plotly.offline import plot
from struct import *
import datetime
from tkinter import filedialog
from tkinter import *



root = Tk()
filename = filedialog.askdirectory(title="Select the folder where your sites are stored")
root.destroy()

myroot=filename



df=[]

for folder in os.listdir(myroot):
    if os.path.isdir(myroot+'/'+folder):
        for subfolder in os.listdir(myroot+'/'+folder):
            if os.path.isdir(myroot+'/'+folder+'/'+subfolder) and subfolder[:4]=='meas':
                starttime_string=subfolder[5:]
                starttime=datetime.datetime.strptime(starttime_string, "%Y-%m-%d_%H-%M-%S")

                for atsfilename in os.listdir(myroot+'/'+folder+'/'+subfolder):
                    if atsfilename[-3:]=='ats':
                        file_stats=os.stat(myroot+'/'+folder+'/'+subfolder+'/'+atsfilename)
                        if file_stats.st_size>0:
                            file=open(myroot+'/'+folder+'/'+subfolder+'/'+atsfilename,'rb')
                            file.seek(4)
                            byte=file.read(4)
                            nos=unpack('i', byte)[0]
                            file.seek(8)
                            byte2=file.read(4)
                            sampling=unpack('f',byte2)[0]
                            duration=nos/sampling
                            stoptime=starttime+datetime.timedelta(seconds=duration)  
                            adu=atsfilename[:3]
                
                df.append(dict(Task=folder+'_'+adu, Start=str(starttime), Finish=str(stoptime), Resource=str(sampling)))



fig = ff.create_gantt(df, index_col='Resource', show_colorbar=True, group_tasks=True)
plot(fig)

这是制作窗口 GUI 的基本 pyinstaller 代码。

pyinstaller --onefile -w DEEPEM_GANTT.py 

-w 要求将其加窗。也可以使用标志 --windowed--noconsole

查看 here 了解更多信息。