我想要做的是从我的脚本中获取可执行文件(onefile或onefolder并不重要)(使用PyQt4在Python 3.5中编写)。 当我运行pyinstaller命令(例如 pyinstaller -w MyApp.py )时,会创建该文件夹但是当我双击MyApp.exe时会出现一个带有致命错误的小窗口:MyApp返回-1。 我试图降级pyinstaller和/或setuptools版本,但没有解决问题。 我已经简化了我的脚本,以便任何人都可以使用它(原始的请求2个万用表的测量):代码如下。
# Imports
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from datetime import datetime
import threading
from math import floor
from matplotlib import style
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
from matplotlib.dates import DateFormatter, AutoDateLocator
from matplotlib.figure import Figure
import random
import numpy as np
import time
date_format = "%d/%m/%Y %H.%M.%S"
def threaded(fn):
def wrapper(*args, **kwargs):
threading.Thread(target=fn, args=args, kwargs=kwargs).start()
return wrapper
class MyCanvas(FigureCanvas):
"""Matplotlib Figure widget"""
def __init__(self):
# first image setup
self.fig = Figure()
self.ax1 = self.fig.add_subplot(111)
self.ax2 = self.ax1.twinx()
# initialization of the canvas
FigureCanvas.__init__(self, self.fig)
# set X axis for date and time
self.fig.autofmt_xdate()
self.ax1.xaxis_date()
formatter = DateFormatter('%m/%d %H:%M:%S')
self.ax1.xaxis.set_major_formatter(formatter)
locator = AutoDateLocator()
self.ax1.xaxis.set_major_locator(locator)
# resize the plot
box = self.ax1.get_position()
self.ax1.set_position([box.x0, box.y0, box.width * 0.8, box.height])
self.ax2.set_position([box.x0, box.y0, box.width * 0.8, box.height])
# set axes labels
self.ax1.set_ylabel('Current [A]', size=12, color='b')
self.ax2.set_ylabel('Voltage [V]', size=12, color='r')
self.ax1.tick_params(axis='both', which='major', labelsize=10)
self.ax2.tick_params(axis='both', which='major', labelsize=10)
# generates first "empty" plots
self.x_axis_values, self.current_curve, self.voltage_curve = [], [], []
# generates first element in timeline
now = datetime.now()
self.x_axis_values.append(now)
self.current_curve.append(0)
self.voltage_curve.append(0)
self.l_current_curve, = self.ax1.plot(self.x_axis_values, self.current_curve, '-b', label='I_A1')
self.l_voltage_curve, = self.ax2.plot(self.x_axis_values, self.voltage_curve, '-r', label='V_A2-A3')
# add legend to plot
h1, l1 = self.ax1.get_legend_handles_labels()
h2, l2 = self.ax2.get_legend_handles_labels()
self.ax1.legend(h1 + h2, l1 + l2, loc='upper left', prop={'size': 10}, bbox_to_anchor=(1.15, 1))
# force a redraw of the Figure
self.fig.canvas.draw()
# initialize X and Y axes values
self.x, self.y1, self.y2 = None, None, None
# this variable becomes True when new elements are ready to be plotted
self.ready = False
# call the update method (to speed-up visualization)
self.timerEvent(None)
# start timer, trigger event every 200 millisecs (=0.2sec)
self.timer = self.startTimer(200)
@threaded
def timerEvent(self, evt):
"""
Custom timerEvent code, called at timer event receive
:param evt:
:return:
"""
# get result data
if self.ready is True:
x_datetime = self.x
result = [self.y1, self.y2]
# append new data to the datasets
self.x_axis_values.append(x_datetime)
self.current_curve.append(result[0])
self.voltage_curve.append(result[1])
# update lines data using the lists with new data
self.l_current_curve.set_xdata(self.x_axis_values)
self.l_current_curve.set_ydata(self.current_curve)
self.l_voltage_curve.set_xdata(self.x_axis_values)
self.l_voltage_curve.set_ydata(self.voltage_curve)
datemin = min(self.x_axis_values)
datemax = max(self.x_axis_values)
self.ax1.set_xlim(datemin, datemax)
self.ax2.set_xlim(datemin, datemax)
self.ax1.set_xticks(np.linspace(self.ax1.get_xbound()[0], self.ax1.get_xbound()[1], 5))
y1min = min(self.current_curve)
y1max = max(self.current_curve)
self.ax1.set_ylim(floor(y1min) - 1, floor(y1max) + 2)
y2min = min(self.voltage_curve)
y2max = max(self.voltage_curve)
self.ax2.set_ylim(floor(y2min) - 1, floor(y2max) + 2)
self.ax1.set_yticks(np.linspace(self.ax1.get_ybound()[0], self.ax1.get_ybound()[1], 10))
self.ax2.set_yticks(np.linspace(self.ax2.get_ybound()[0], self.ax2.get_ybound()[1], 10))
# force a redraw of the Figure
self.fig.canvas.draw()
self.ready = False
class MainWindow(QMainWindow):
dict_items = {}
first_time = True
start_time = time.strftime(date_format, time.localtime(time.time()))
busy = False
path = 'C:\sample.csv'
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
# Initialize the main window
self.setObjectName("MainWindow")
self.setFixedSize(800, 480) # define the window size
self.setLayoutDirection(Qt.LeftToRight)
self.setStyleSheet("")
self.setAttribute(Qt.WA_DeleteOnClose)
# Initialize the central widget
self.centralWidget = QWidget(self)
# Initialize the tab widget
self.tabWidget = QTabWidget(self.centralWidget)
# Initialize the configure tab
self.Configure = QWidget()
self.startButton = QPushButton(self.Configure)
self.stopButton = QPushButton(self.Configure)
# Initialize the table tab
self.Table = QWidget()
self.tableView = QTableView(self.Table)
self.model = QStandardItemModel(self)
# Initialize the graph tab
self.Graph = QWidget()
style.use('bmh')
self.canvas = MyCanvas()
self.mpl_toolbar = NavigationToolbar(self.canvas, self)
self.vbl = QVBoxLayout()
self.vbl.addWidget(self.canvas)
self.vbl.addWidget(self.mpl_toolbar)
self.Graph.setLayout(self.vbl)
# Launch functions to define the layouts and actions
self.central_widget()
self.tab_widget()
self.configure_tab()
self.add_configure()
self.table_tab()
self.add_table()
self.graph_tab()
self.add_graph()
self.configure_buttons()
self.edit_actions()
def central_widget(self):
self.centralWidget.setObjectName("centralWidget")
self.setCentralWidget(self.centralWidget)
def tab_widget(self):
self.tabWidget.setGeometry(QRect(0, 0, 700, 420))
font = QFont()
font.setFamily("MS Shell Dlg 2")
font.setPointSize(8)
font.setBold(False)
font.setItalic(False)
font.setWeight(50)
font.setKerning(True)
self.tabWidget.setFont(font)
self.tabWidget.setContextMenuPolicy(Qt.DefaultContextMenu)
self.tabWidget.setStyleSheet("")
self.tabWidget.setTabPosition(QTabWidget.North)
self.tabWidget.setTabShape(QTabWidget.Rounded)
self.tabWidget.setIconSize(QSize(32, 32))
self.tabWidget.setObjectName("tabWidget")
self.tabWidget.setCurrentIndex(0)
def configure_tab(self):
self.Configure.setObjectName("Configure")
def add_configure(self):
self.tabWidget.addTab(self.Configure, "")
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Configure), "Configure")
def table_tab(self):
self.Table.setObjectName("Table")
self.tableView.setGeometry(QRect(10, 10, 670, 370))
self.tableView.setObjectName("tableView")
self.tableView.setModel(self.model)
self.tableView.horizontalHeader().setStretchLastSection(True)
font = QFont("Tahoma", 7)
self.tableView.setFont(font)
self.tableView.verticalHeader().setDefaultSectionSize(18)
def add_table(self):
self.tabWidget.addTab(self.Table, "")
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Table), "Table")
def graph_tab(self):
self.Graph.setObjectName("Graph")
def add_graph(self):
self.tabWidget.addTab(self.Graph, "")
self.tabWidget.setTabText(self.tabWidget.indexOf(self.Graph), "Graph")
def configure_buttons(self):
self.startButton.setGeometry(QRect(20, 70, 131, 23))
self.startButton.setStyleSheet("")
self.startButton.setText("START")
self.stopButton.setGeometry(QRect(220, 70, 131, 23))
self.stopButton.setStyleSheet("")
self.stopButton.setText("STOP")
def edit_actions(self):
self.startButton.clicked.connect(self.start_action)
self.stopButton.clicked.connect(self.stop_action)
def start_action(self):
self.busy = True
if self.first_time:
self.write_header()
self.first_time = False
self.start_time = time.strftime(date_format, time.localtime(time.time()))
self.logging()
def stop_action(self):
self.busy = False
self.canvas.killTimer(self.canvas.timer)
def write_header(self):
header = ['Date [D/M/Y H.M.S]', 'Time [h.m.s]', 'M1:...', 'M2:...']
self.model.clear()
self.model.setHorizontalHeaderLabels(header)
self.tableView.horizontalHeader().setResizeMode(QHeaderView.Stretch)
header_string = ','.join(header)
f = open(self.path, 'w')
f.write(header_string + '\n')
f.close()
def write_row(self, row):
row_list = list(row.split(','))
elements = [QStandardItem(item) for item in row_list]
self.model.appendRow(elements)
@threaded
def logging(self):
while self.busy is True:
n = datetime.now()
now = time.localtime(time.time())
time_list = self.get_time(now)
self.measuring(time_list, n)
time.sleep(1)
@threaded
def measuring(self, time_list, now):
r1 = 10 * random.random() ** 2
r2 = random.random() * random.randint(1, 10) ** 2
meas_row = str(r1) + "," + str(r2)
row = time_list[0] + "," + time_list[1] + "," + meas_row + '\n'
f = open(self.path, 'a')
f.write(row)
f.close()
self.write_row(row)
self.canvas.x = now
self.canvas.y1 = r1
self.canvas.y2 = r2
self.canvas.ready = True
def get_time(self, n):
t = time.strftime(date_format, n)
t2 = datetime.strptime(t, date_format)
t1 = datetime.strptime(self.start_time, date_format)
d0 = t2 - t1
days = d0.days
seconds = d0.seconds
m, s = divmod(seconds, 60)
h, m = divmod(m, 60)
h += 24 * days
d = str(h) + '.' + str(m) + '.' + str(s)
td = [t, d]
return td
def main():
app = QApplication(sys.argv)
app.setApplicationName('Meter')
test = MainWindow()
test.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
这是pyinstaller命令生成的内容。
C:\Users\Leo Raimondo\Documents\Python Scripts\test04>pyinstaller -w MyApp.py
126 INFO: PyInstaller: 3.1.1
127 INFO: Python: 3.5.1
127 INFO: Platform: Windows-7-6.1.7601-SP1
128 INFO: wrote C:\Users\Leo Raimondo\Documents\Python Scripts\test04\MyApp.spec
132 INFO: UPX is not available.
134 INFO: Extending PYTHONPATH with paths
['C:\\Users\\Leo Raimondo\\Documents\\Python Scripts\\test04',
'C:\\Users\\Leo Raimondo\\Documents\\Python Scripts\\test04']
135 INFO: checking Analysis
135 INFO: Building Analysis because out00-Analysis.toc is non existent
135 INFO: Initializing module dependency graph...
141 INFO: Initializing module graph hooks...
147 INFO: Analyzing base_library.zip ...
5024 INFO: running Analysis out00-Analysis.toc
5566 INFO: Analyzing C:\Users\Leo Raimondo\Documents\Python Scripts\test04\MyApp
.py
5898 INFO: Processing pre-find module path hook distutils
8319 INFO: Processing pre-find module path hook site
8320 INFO: site: retargeting to fake-dir 'c:\\anaconda3\\lib\\site-packages\\PyI
nstaller\\fake-modules'
13056 INFO: Processing pre-safe import module hook win32com
15623 INFO: Processing pre-safe import module hook six.moves
32523 INFO: Looking for import hooks ...
32529 INFO: Processing hook hook-PyQt4.py
32531 INFO: Processing hook hook-setuptools.py
32533 INFO: Processing hook hook-sqlite3.py
32538 INFO: Processing hook hook-pygments.py
33833 INFO: Processing hook hook-PyQt4.QtGui.py
34470 INFO: Processing hook hook-cryptography.py
34477 INFO: Processing hook hook-matplotlib.backends.py
35420 INFO: Matplotlib backend "GTK": ignored
Gtk* backend requires pygtk to be installed.
36129 INFO: Matplotlib backend "GTKAgg": ignored
Gtk* backend requires pygtk to be installed.
36595 INFO: Matplotlib backend "GTKCairo": ignored
No module named 'gtk'
37275 INFO: Matplotlib backend "MacOSX": ignored
cannot import name '_macosx'
38008 INFO: Matplotlib backend "Qt4Agg": added
38740 INFO: Matplotlib backend "Qt5Agg": added
39507 INFO: Matplotlib backend "TkAgg": added
40169 INFO: Matplotlib backend "WX": ignored
Matplotlib backend_wx and backend_wxagg require wxPython >=2.8.12
40881 INFO: Matplotlib backend "WXAgg": ignored
Matplotlib backend_wx and backend_wxagg require wxPython >=2.8.12
41347 INFO: Matplotlib backend "GTK3Cairo": ignored
Gtk3 backend requires pygobject to be installed.
42013 INFO: Matplotlib backend "GTK3Agg": ignored
Gtk3 backend requires pygobject to be installed.
42518 INFO: Matplotlib backend "WebAgg": ignored
Traceback (most recent call last):
File "<string>", line 12, in <module>
File "c:\anaconda3\lib\site-packages\matplotlib\backends\backend_webagg.py", l
ine 32, in <module>
import tornado.web
File "c:\anaconda3\lib\site-packages\tornado\web.py", line 82, in <module>
from tornado.concurrent import Future
File "c:\anaconda3\lib\site-packages\tornado\concurrent.py", line 37, in <modu
le>
from concurrent import futures
File "c:\anaconda3\lib\site-packages\concurrent\futures\__init__.py", line 8,
in <module>
from concurrent.futures._base import (FIRST_COMPLETED,
File "c:\anaconda3\lib\site-packages\concurrent\futures\_base.py", line 355
raise type(self._exception), self._exception, self._traceback
^
SyntaxError: invalid syntax
43022 INFO: Matplotlib backend "nbAgg": ignored
Traceback (most recent call last):
File "<string>", line 12, in <module>
File "c:\anaconda3\lib\site-packages\matplotlib\backends\backend_nbagg.py", li
ne 14, in <module>
import tornado.ioloop
File "c:\anaconda3\lib\site-packages\tornado\ioloop.py", line 46, in <module>
from tornado.concurrent import TracebackFuture, is_future
File "c:\anaconda3\lib\site-packages\tornado\concurrent.py", line 37, in <modu
le>
from concurrent import futures
File "c:\anaconda3\lib\site-packages\concurrent\futures\__init__.py", line 8,
in <module>
from concurrent.futures._base import (FIRST_COMPLETED,
File "c:\anaconda3\lib\site-packages\concurrent\futures\_base.py", line 355
raise type(self._exception), self._exception, self._traceback
^
SyntaxError: invalid syntax
43700 INFO: Matplotlib backend "agg": added
44164 INFO: Matplotlib backend "cairo": ignored
Cairo backend requires that cairocffi or pycairo is installed.
44629 INFO: Matplotlib backend "emf": ignored
No module named 'matplotlib.backends.backend_emf'
45086 INFO: Matplotlib backend "gdk": ignored
No module named 'gobject'
45784 INFO: Matplotlib backend "pdf": added
47049 INFO: Matplotlib backend "pgf": added
47719 INFO: Matplotlib backend "ps": added
48430 INFO: Matplotlib backend "svg": added
49108 INFO: Matplotlib backend "template": added
49299 INFO: Processing hook hook-requests.py
49305 INFO: Processing hook hook-distutils.py
49307 INFO: Processing hook hook-xml.dom.domreg.py
49308 INFO: Processing hook hook-pydoc.py
49309 INFO: Processing hook hook-pycparser.py
49426 INFO: Processing hook hook-PyQt4.QtCore.py
49554 INFO: Processing hook hook-pythoncom.py
50051 INFO: Processing hook hook-pytz.py
50175 INFO: Processing hook hook-PIL.py
50181 INFO: Excluding import 'PyQt4'
50188 WARNING: From PIL.ImageQt removing import PyQt4.QtGui.QImage
50188 WARNING: From PIL.ImageQt removing import PyQt4.QtCore
50189 WARNING: From PIL.ImageQt removing import PyQt4.QtCore.QBuffer
50189 WARNING: From PIL.ImageQt removing import PyQt4.QtGui.qRgba
50189 WARNING: From PIL.ImageQt removing import PyQt4.QtGui.QPixmap
50190 WARNING: From PIL.ImageQt removing import PyQt4.QtGui
50190 WARNING: From PIL.ImageQt removing import PyQt4.QtCore.QIODevice
50191 INFO: Excluding import 'tkinter'
50197 INFO: Import to be excluded not found: 'FixTk'
50198 INFO: Excluding import 'PyQt5'
50204 WARNING: From PIL.ImageQt removing import PyQt5
50204 WARNING: From PIL.ImageQt removing import PyQt5.QPixmap
50205 WARNING: From PIL.ImageQt removing import PyQt5.qRgba
50205 WARNING: From PIL.ImageQt removing import PyQt5.QImage
50206 INFO: Excluding import 'PySide'
50212 WARNING: From PIL.ImageQt removing import PySide.QPixmap
50212 WARNING: From PIL.ImageQt removing import PySide.qRgba
50213 WARNING: From PIL.ImageQt removing import PySide.QImage
50214 WARNING: From PIL.ImageQt removing import PySide
50214 INFO: Processing hook hook-zmq.py
50701 INFO: Excluding import 'zmq.libzmq'
50707 WARNING: From zmq removing import zmq.libzmq
50710 INFO: Processing hook hook-xml.py
50711 INFO: Processing hook hook-jsonschema.py
50715 INFO: Processing hook hook-pkg_resources.py
51073 INFO: Processing hook hook-PyQt4.QtSvg.py
51074 INFO: Processing hook hook-matplotlib.py
51572 INFO: Processing hook hook-_tkinter.py
51842 INFO: checking Tree
51842 INFO: Building Tree because out00-Tree.toc is non existent
51843 INFO: Building Tree out00-Tree.toc
51953 INFO: checking Tree
51954 INFO: Building Tree because out01-Tree.toc is non existent
51954 INFO: Building Tree out01-Tree.toc
51971 INFO: Processing hook hook-xml.etree.cElementTree.py
51973 INFO: Processing hook hook-win32com.py
52100 INFO: Processing hook hook-PIL.Image.py
52344 INFO: Processing hook hook-jinja2.py
52360 INFO: Processing hook hook-pywintypes.py
52841 INFO: Processing hook hook-encodings.py
52853 INFO: Processing hook hook-IPython.py
90688 INFO: Processing hook hook-sysconfig.py
90690 INFO: Processing hook hook-PIL.SpiderImagePlugin.py
90700 INFO: Excluding import 'tkinter'
90710 INFO: Import to be excluded not found: 'FixTk'
90711 INFO: Processing hook hook-patsy.py
90712 INFO: Processing hook hook-docutils.py
91365 INFO: Processing hook hook-scipy.io.matlab.py
91367 INFO: Processing hook hook-lxml.etree.py
91375 INFO: Processing hook hook-sphinx.py
95591 INFO: Processing hook hook-babel.py
95749 INFO: Processing hook hook-scipy.special._ufuncs.py
95751 INFO: Processing hook hook-scipy.sparse.csgraph.py
95755 INFO: Processing hook hook-boto.py
95787 INFO: Processing hook hook-sqlalchemy.py
96115 WARNING: Hidden import 'MySQLdb' not found (probably old hook)
96116 INFO: Processing hook hook-idlelib.py
96127 INFO: Processing hook hook-tables.py
96129 INFO: Processing hook hook-scipy.linalg.py
96411 INFO: Looking for ctypes DLLs
96502 WARNING: library dllpaths required via ctypes not found
96516 INFO: Analyzing run-time hooks ...
96578 INFO: Including run-time hook 'pyi_rth_win32comgenpy.py'
96581 INFO: Including run-time hook 'pyi_rth_pkgres.py'
96583 INFO: Including run-time hook 'pyi_rth__tkinter.py'
96585 INFO: Including run-time hook 'pyi_rth_qt4plugins.py'
96588 INFO: Including run-time hook 'pyi_rth_mplconfig.py'
96590 INFO: Including run-time hook 'pyi_rth_mpldata.py'
96723 INFO: Looking for dynamic libraries
98251 WARNING: lib not found: libzmq.cp35-win_amd64.pyd dependency of c:\anacond
a3\lib\site-packages\zmq\backend\cython\message.cp35-win_amd64.pyd
98443 WARNING: lib not found: libzmq.cp35-win_amd64.pyd dependency of c:\anacond
a3\lib\site-packages\zmq\backend\cython\error.cp35-win_amd64.pyd
98633 WARNING: lib not found: libzmq.cp35-win_amd64.pyd dependency of c:\anacond
a3\lib\site-packages\zmq\backend\cython\socket.cp35-win_amd64.pyd
98823 WARNING: lib not found: libzmq.cp35-win_amd64.pyd dependency of c:\anacond
a3\lib\site-packages\zmq\backend\cython\_poll.cp35-win_amd64.pyd
99016 WARNING: lib not found: libzmq.cp35-win_amd64.pyd dependency of c:\anacond
a3\lib\site-packages\zmq\backend\cython\utils.cp35-win_amd64.pyd
99209 WARNING: lib not found: libzmq.cp35-win_amd64.pyd dependency of c:\anacond
a3\lib\site-packages\zmq\backend\cython\context.cp35-win_amd64.pyd
99413 WARNING: lib not found: libzmq.cp35-win_amd64.pyd dependency of c:\anacond
a3\lib\site-packages\zmq\backend\cython\_device.cp35-win_amd64.pyd
99604 WARNING: lib not found: libzmq.cp35-win_amd64.pyd dependency of c:\anacond
a3\lib\site-packages\zmq\backend\cython\_version.cp35-win_amd64.pyd
101598 WARNING: Attempted to add Python module twice with different upper/lowerc
ases: PIL._imaging
101598 WARNING: Attempted to add Python module twice with different upper/lowerc
ases: PIL._imagingft
101599 WARNING: Attempted to add Python module twice with different upper/lowerc
ases: PyQt4.QtSvg
101600 WARNING: Attempted to add Python module twice with different upper/lowerc
ases: Cython.Compiler.Scanning
101600 WARNING: Attempted to add Python module twice with different upper/lowerc
ases: Cython.Compiler.Parsing
101601 WARNING: Attempted to add Python module twice with different upper/lowerc
ases: Cython.Compiler.Code
101601 WARNING: Attempted to add Python module twice with different upper/lowerc
ases: Cython.Compiler.Visitor
101601 WARNING: Attempted to add Python module twice with different upper/lowerc
ases: Cython.Compiler.FlowControl
101602 WARNING: Attempted to add Python module twice with different upper/lowerc
ases: scipy.optimize.moduleTNC
101603 WARNING: Attempted to add Python module twice with different upper/lowerc
ases: PyQt4.QtCore
101603 WARNING: Attempted to add Python module twice with different upper/lowerc
ases: PyQt4.QtGui
101604 INFO: Looking for eggs
101604 INFO: Using Python library c:\anaconda3\python35.dll
101604 INFO: Found binding redirects:
[]
101730 INFO: Warnings written to C:\Users\Leo Raimondo\Documents\Python Scripts\
test04\build\MyApp\warnMyApp.txt
102089 INFO: checking PYZ
102090 INFO: Building PYZ because out00-PYZ.toc is non existent
102090 INFO: Building PYZ (ZlibArchive) C:\Users\Leo Raimondo\Documents\Python S
cripts\test04\build\MyApp\out00-PYZ.pyz
105908 INFO: checking PKG
105909 INFO: Building PKG because out00-PKG.toc is non existent
105909 INFO: Building PKG (CArchive) out00-PKG.pkg
105961 INFO: Bootloader c:\anaconda3\lib\site-packages\PyInstaller\bootloader\Wi
ndows-64bit\runw.exe
105961 INFO: checking EXE
105962 INFO: Building EXE because out00-EXE.toc is non existent
105962 INFO: Building EXE from out00-EXE.toc
105980 INFO: Appending archive to EXE C:\Users\Leo Raimondo\Documents\Python Scr
ipts\test04\build\MyApp\MyApp.exe
106018 INFO: checking COLLECT
106019 INFO: Building COLLECT because out00-COLLECT.toc is non existent
106019 INFO: Building COLLECT out00-COLLECT.toc