从 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 了解更多信息。
我想将名为 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 了解更多信息。