Closed kristofmulier closed 3 years ago
The master branch of cx_Freeze failed to install,
What is the error? Have you tried pip install -U cx-freeze ?
When using cx_Freeze, it crashes with the following message:
Can you post your setup.py or at least the line of include_files option of build_exe?
EDIT: master branch doesn't exit. Now it is main branch.
Hi @marcelotduarte , Our Freeze script is rather long. So I've tried to figure out where precisely the error gets triggered. It turns out to be at this statement:
freezer = cx_Freeze.Freezer(
executables,
includes = modules,
#excludes = ['tkinter'],
replacePaths = [],
compress = True,
optimizeFlag = True,
path = search_path,
targetDir = freeze_directory,
zipIncludes = [],
silent = False,
)
So the error manifests itself when our freeze script tries to instantiate the cx_Freeze.Freezer()
object. Just for refreshing the memory, this is the error message:
Traceback (most recent call last):
File "C:\Seafile\EMBEETLE IDE\embeetle\beetle_core\to_exe\freeze_embeetle.py", line 732, in <module>
result = freeze_embeetle(
File "C:\Seafile\EMBEETLE IDE\embeetle\beetle_core\to_exe\freeze_embeetle.py", line 481, in freeze_embeetle
freezer = cx_Freeze.Freezer(
File "C:\Python39\lib\site-packages\cx_Freeze\freezer.py", line 90, in __init__
self.includeFiles = process_path_specs(includeFiles)
File "C:\Python39\lib\site-packages\cx_Freeze\common.py", line 60, in process_path_specs
for spec in specs:
TypeError: 'NoneType' object is not iterable
I've put a print stament right above the offending statement, to see what parameters are exactly given to instantiate cx_Freeze.Freezer()
:
freezer = cx_Freeze.Freezer(
[<Executable script=embeetle.py>],
includes = ['data', 'functions', 'purefunctions', 'beetle_console.console_contextmenu', 'beetle_console.console_widget', 'beetle_console.interactive_command', 'beetle_console.make_console', 'beetle_console.mini_console', 'beetle_console.serial_port', 'beetle_console.standalone_console', 'beetle_console.test_console', 'bpathlib.file_power', 'bpathlib.path_obj', 'bpathlib.path_power', 'bpathlib.tool_obj', 'bpathlib.treepath_obj', 'bpathlib.ziplongpath', 'clang_button.clang_button', 'clang_button.clang_contextmenu', 'clang_button.item', 'clang_digester.digester', 'clang_digester.digest_queue', 'clang_feeder.feeder', 'clang_feeder.feeder_queue', 'clang_interaction.clang_to_dashboard', 'clang_interaction.clang_to_dirtree', 'clang_interaction.dashboard_to_clang', 'clang_interaction.dirtree_to_clang', 'components.actionfilter', 'components.buttonparser', 'components.clanginterface', 'components.communicator', 'components.cursor_manager', 'components.customstyle', 'components.decorators', 'components.diagnostics', 'components.fifo_queue', 'components.filechecker', 'components.hexbuilding', 'components.hexpainting', 'components.history', 'components.hotspots', 'components.iconmanipulator', 'components.interpreter', 'components.keyboardmanipulator', 'components.linelist', 'components.reader', 'components.singleton', 'components.symbolhandler', 'components.thesquid', 'components.thread_switcher', 'contextmenu.contextmenu', 'contextmenu.contextmenu_launcher', 'contextmenu.path_contextmenu', 'dirdash.general_item', 'dirdash.common.chassis.chassis', 'dirdash.common.helpers.item_emitter', 'dirdash.common.helpers.item_layout', 'dirdash.common.helpers.spacer_layout', 'dirdash.common.items.item', 'dirdash.common.widgets.item_arrow', 'dirdash.common.widgets.item_btn', 'dirdash.common.widgets.item_chbx', 'dirdash.common.widgets.item_img', 'dirdash.common.widgets.item_lbl', 'dirdash.common.widgets.item_lineedit', 'dirdash.common.widgets.item_progbar', 'dirdash.common.widgets.item_richlbl', 'dirdash.common.widgets.item_widget', 'dirdash.dashboard.chassis.dashboard', 'dirdash.dashboard.chassis.dashboard_worker', 'dirdash.dashboard.contextmenus.chip_contextmenu', 'dirdash.dashboard.contextmenus.lib_contextmenu', 'dirdash.dashboard.contextmenus.probe_comport_contextmenu', 'dirdash.dashboard.contextmenus.probe_contextmenu', 'dirdash.dashboard.contextmenus.progbar_contextmenu', 'dirdash.dashboard.contextmenus.settings_contextmenu', 'dirdash.dashboard.contextmenus.tool_contextmenu', 'dirdash.dashboard.contextmenus.toplvl_contextmenu', 'dirdash.dashboard.contextmenus.treepath_contextmenu', 'dirdash.dashboard.contextmenus.specific_components.chip_contextmenu_parts', 'dirdash.dashboard.contextmenus.specific_components.probe_contextmenu_parts', 'dirdash.dashboard.contextmenus.specific_components.tool_contextmenu_parts', 'dirdash.dashboard.items.item', 'dirdash.dashboard.items.banner_items.banner_items', 'dirdash.dashboard.items.board_items.board_items', 'dirdash.dashboard.items.chip_items.chip_items', 'dirdash.dashboard.items.lib_items.lib_info_items', 'dirdash.dashboard.items.lib_items.lib_items', 'dirdash.dashboard.items.path_items.toolpath_items', 'dirdash.dashboard.items.path_items.treepath_items', 'dirdash.dashboard.items.path_items.treepath_item_helper', 'dirdash.dashboard.items.probe_items.probe_comportitem', 'dirdash.dashboard.items.probe_items.probe_items', 'dirdash.dashboard.items.rtos_items.rtos_items', 'dirdash.dirtree.chassis.dirtree', 'dirdash.dirtree.chassis.dirtree_folder_init', 'dirdash.dirtree.chassis.dirtree_save_load', 'dirdash.dirtree.contextmenus.chbx_contextmenu', 'dirdash.dirtree.contextmenus.dir_contextmenu', 'dirdash.dirtree.contextmenus.file_contextmenu', 'dirdash.dirtree.contextmenus.settings_contextmenu', 'dirdash.dirtree.items.dirtree_calc', 'dirdash.dirtree.items.item', 'dirdash.dirtree.widgets.item_chbx', 'dirdash.toolmanager.chassis.toolmanager', 'dirdash.toolmanager.chassis.toolmanager_worker', 'dirdash.toolmanager.contextmenus.info_items_contextmenu', 'dirdash.toolmanager.contextmenus.settings_contextmenu', 'dirdash.toolmanager.contextmenus.toolmanager_contextmenu', 'dirdash.toolmanager.items.add_item', 'dirdash.toolmanager.items.info_items', 'dirdash.toolmanager.items.item', 'dirdash.toolmanager.items.build_automation_items.build_automation_items', 'dirdash.toolmanager.items.flash_debug_server_items.flash_debug_server_items', 'dirdash.toolmanager.items.toolchain_items.toolchain_items', 'gui.dialogs.okdialog', 'gui.dialogs.popupdialog', 'gui.dialogs.projectcreationdialogs', 'gui.dialogs.scalingdialog', 'gui.dialogs.searchreplacedialog', 'gui.dialogs.splashscreen', 'gui.fonts.fontloader', 'gui.forms.customeditor', 'gui.forms.dockingoverlay', 'gui.forms.functionwheel', 'gui.forms.homewindow', 'gui.forms.informationoverlay', 'gui.forms.mainwindow', 'gui.forms.messagewindow', 'gui.forms.plaineditor', 'gui.forms.replhelper', 'gui.forms.repllineedit', 'gui.forms.tabwidget', 'gui.forms.thebox', 'gui.helpers.advancedcombobox', 'gui.helpers.advancedlineedit', 'gui.helpers.buttons', 'gui.helpers.contextmenu', 'gui.helpers.custom_grid_layout', 'gui.helpers.diagnosticwindow', 'gui.helpers.html_combobox', 'gui.helpers.info', 'gui.helpers.messagelogger', 'gui.helpers.popupbubble', 'gui.helpers.popupsplitter', 'gui.helpers.progresswidget', 'gui.helpers.projectdisplay', 'gui.helpers.qswaplayout', 'gui.helpers.searchbar', 'gui.helpers.searchresultswindow', 'gui.helpers.sessionmanipulator', 'gui.helpers.settingsmanipulator', 'gui.helpers.sourceanalysisbutton', 'gui.helpers.standalonetextdiffer', 'gui.helpers.symbolpopup', 'gui.helpers.symbolwindow', 'gui.helpers.textdiffer', 'gui.helpers.treedisplay', 'gui.helpers.windowsplitter', 'gui.stylesheets.button', 'gui.stylesheets.button_fast', 'gui.stylesheets.checkbox', 'gui.stylesheets.combobox', 'gui.stylesheets.groupbox', 'gui.stylesheets.helper', 'gui.stylesheets.label', 'gui.stylesheets.popupMenu', 'gui.stylesheets.progressbar', 'gui.stylesheets.scrollbar', 'gui.stylesheets.slider', 'gui.stylesheets.splitter', 'gui.stylesheets.statusbar', 'gui.stylesheets.tabbar', 'gui.stylesheets.table', 'gui.stylesheets.tabwidget', 'gui.stylesheets.textbox', 'gui.stylesheets.treewidget', 'gui.stylesheets.dirdash.chassis', 'gui.stylesheets.dirdash.chassis_segment', 'gui.stylesheets.dirdash.itemlbl', 'gui.stylesheets.dirdash.lineEdit', 'gui.templates.baseappwindow', 'gui.templates.basemenu', 'gui.templates.basenodewindow', 'gui.templates.baseprogressbar', 'gui.templates.baseslider', 'gui.templates.basetoolbar', 'gui.templates.basewidget', 'gui.templates.combobox', 'gui.templates.editorbase', 'gui.templates.generaldialog', 'gui.templates.generaldockwidget', 'gui.templates.treedisplaybase', 'gui.templates.treewidget', 'gui.templates.widgetgenerator', 'help.help_texts', 'help.help_subjects.blasphemy', 'help.help_subjects.compilation', 'help.help_subjects.console', 'help.help_subjects.dashboard', 'help.help_subjects.debug', 'help.help_subjects.diagnostics', 'help.help_subjects.dirtree', 'help.help_subjects.editor', 'help.help_subjects.flashing', 'help.help_subjects.general', 'help.help_subjects.home_window', 'help.help_subjects.libraries', 'help.help_subjects.license', 'help.help_subjects.new_tool_wizard', 'help.help_subjects.projstruct', 'help.help_subjects.source_analyzer', 'help.help_subjects.symbolwindow', 'help.help_subjects.tools', 'help.help_subjects.tooltips', 'lexers.ada', 'lexers.c', 'lexers.custompython', 'lexers.cython', 'lexers.functions', 'lexers.linkerscript', 'lexers.nim', 'lexers.oberon', 'lexers.python', 'lexers.routeros', 'lexers.text', 'library_manager.json_cruncher', 'library_manager.json_filter', 'library_manager.json_helper', 'library_manager.lib_const', 'library_manager.lib_manager', 'library_manager.lib_table', 'library_manager.cell_widgets.cell_author', 'library_manager.cell_widgets.cell_header', 'library_manager.cell_widgets.cell_name', 'library_manager.cell_widgets.cell_origin', 'library_manager.cell_widgets.cell_paragraph', 'library_manager.cell_widgets.cell_sentence', 'library_manager.cell_widgets.cell_version', 'library_manager.cell_widgets.cell_widget', 'library_manager.download_wizard.download_wizard', 'library_manager.filter_widgets.author_groupbox', 'library_manager.filter_widgets.author_linebox', 'library_manager.filter_widgets.search_groupbox', 'library_manager.filter_widgets.search_linebox', 'library_manager.filter_widgets.topic_combobox', 'library_manager.filter_widgets.topic_groupbox', 'library_manager.gen_widgets.linebox', 'library_manager.gen_widgets.progbar', 'library_manager.storage_widgets.proj_storage_groupbox', 'library_manager.storage_widgets.search_paths_groupbox', 'library_manager.storage_widgets.search_paths_linebox', 'parsing.ctagsparser', 'parsing.fileparser', 'parsing.parsedatabase', 'parsing.parsetools', 'project.constants', 'project.elf_reader', 'project.exotic_project_launcher', 'project.linker_reader', 'project.makefile_target_executer', 'project.project', 'project.project_report', 'project.readelf', 'project.segments.project_segment', 'project.segments.board_seg.board', 'project.segments.chip_seg.chip', 'project.segments.lib_seg.lib_seg', 'project.segments.path_seg.path_seg', 'project.segments.path_seg.toolpath_seg', 'project.segments.path_seg.treepath_seg', 'project.segments.probe_seg.probe', 'project.segments.rtos_seg.rtos', 'project_generator.fix_warnings', 'project_generator.helper', 'project_generator.projectlist_filegen', 'project_generator.arduino.arduino_gen', 'project_generator.arduino.arduino_importer', 'project_generator.generator.dashboard_mk_generator', 'project_generator.generator.file_changer', 'project_generator.generator.file_generator', 'project_generator.generator.merger', 'project_generator.generator.project_generator', 'project_generator.giga.giga_gen', 'project_generator.giga.giga_importer', 'project_generator.nordic.nordic_gen', 'project_generator.nordic.nordic_importer', 'project_generator.nuvoton.nuvoton_gen', 'project_generator.nuvoton.nuvoton_importer', 'project_generator.stmicro.stmicro_gen', 'project_generator.stmicro.stmicro_importer', 'settings.settings', 'source_analyzer.flag_extractor', 'source_analyzer.source_analyzer', 'source_analyzer.template', 'themes.air', 'themes.earth', 'themes.mc', 'themes.water', 'toolmanager.toolmanager', 'toolmanager.version_extractor', 'updater_updater.updater', 'wizards.intro_wizard.intro_wizard', 'wizards.intro_wizard.page_one.page_one', 'wizards.intro_wizard.page_one.page_one_intro', 'wizards.intro_wizard.page_zero.item', 'wizards.intro_wizard.page_zero.page_zero', 'wizards.intro_wizard.page_zero.page_zero_chip', 'wizards.intro_wizard.page_zero.page_zero_intro', 'wizards.intro_wizard.page_zero.page_zero_probe', 'wizards.intro_wizard.page_zero.page_zero_projectlyt', 'wizards.intro_wizard.page_zero.page_zero_tools', 'wizards.tool_wizard.new_tool_wizard', 'wizards.tool_wizard.page_one', 'wizards.tool_wizard.page_two', 'wizards.tool_wizard.page_zero', 'wizards.tool_wizard.wizard_helper', 'ctypes', 'PyQt5', 'PyQt5.Qsci', 'PyQt5.QtTest', 'elftools', 'elftools.common.exceptions', 'elftools.common.py3compat', 'elftools.elf.elffile', 'elftools.elf.dynamic', 'elftools.elf.enums', 'elftools.elf.segments', 'elftools.elf.sections', 'elftools.elf.gnuversions', 'elftools.elf.relocation', 'elftools.elf.descriptions', 'elftools.elf.constants', 'elftools.dwarf.dwarfinfo', 'elftools.dwarf.descriptions', 'elftools.dwarf.constants', 'elftools.dwarf.callframe', 'regex', 'timeit', 'queue', 'ctypes', 'multiprocessing', 'threading', 'json', 'sqlite3', 'urllib.parse', 'urllib.request', 'urllib.error', 'http.client', 'tempfile', 'contextlib', 'webbrowser', 'statistics', 'pathlib', 'serial', 'serial.tools', 'serial.tools.list_ports', 'textwrap', 'packaging', 'packaging.version', 'win32api', 'win32con', 'win32file'],
replacePaths = [],
compress = True,
optimizeFlag = True,
path = ['C:\\Seafile\\EMBEETLE IDE\\embeetle\\beetle_core\\to_exe', 'C:\\Seafile\\EMBEETLE IDE\\embeetle\\beetle_shared', 'C:\\Python39\\python39.zip', 'C:\\Python39\\DLLs', 'C:\\Python39\\lib', 'C:\\Python39', 'C:\\Python39\\lib\\site-packages', 'C:\\Python39\\lib\\site-packages\\pyelftools-0.27-py3.9.egg', 'C:\\Python39\\lib\\site-packages\\win32', 'C:\\Python39\\lib\\site-packages\\win32\\lib', 'C:\\Python39\\lib\\site-packages\\Pythonwin', 'C:\\Seafile\\EMBEETLE IDE\\embeetle\\beetle_core\\to_exe\\..', 'C:/Users/Gebruiker/embeetle_dist/windows/embeetle/copied_embeetle'],
targetDir = 'C:/Users/Gebruiker/embeetle_dist/windows/embeetle/beetle_core',
zipIncludes = [],
silent = False,
)
Hi @marcelotduarte ,
My colleague Matic Kukovec created a reproducible example to trigger the error. First, you need a very simple hello_world.py
file that just spawns a PyQt5 window:
hello_world.py
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5 import QtWidgets, uic
class MainWindow(QtWidgets.QMainWindow):
count = 0
def __init__(self, parent = None):
super(MainWindow, self).__init__(parent)
self.mdi = QMdiArea()
self.setCentralWidget(self.mdi)
bar = self.menuBar()
file = bar.addMenu("Subwindow")
file.addAction("window1")
file.addAction("text1")
file.addAction("text2")
file.triggered[QAction].connect(self.click)
self.setWindowTitle("Multiple window using MDI")
def click(self, q):
print ("New sub window")
if q.text() == "window1":
MainWindow.count = MainWindow.count+1
sub = QMdiSubWindow()
sub.setWidget(QTextEdit())
sub.setWindowTitle("subwindow"+str(MainWindow.count))
self.mdi.addSubWindow(sub)
sub.show()
if q.text() == "text1":
self.mdi.cascadeSubWindows()
if q.text() == "text2":
self.mdi.tileSubWindows()
def main():
app = QApplication(sys.argv)
ex = MainWindow()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Next, you need this setup.py
file next to hello_world.py
:
setup.py
import os
import sys
import platform
import cx_Freeze
builtin_modules = [
"ctypes",
"PyQt5",
"PyQt5.Qsci",
"PyQt5.QtTest",
"ctypes",
"multiprocessing",
"threading",
]
# Windows specific
if platform.system().lower() == "windows":
builtin_modules.extend([
"win32api",
"win32con",
"win32file",
])
base = "Win32GUI"
python_path = os.path.join(os.path.dirname(sys.executable))
output_path = os.path.join(os.getcwd(), "output")
executables = [
cx_Freeze.Executable(
"hello_world.py",
initScript = None,
base = base,
targetName = "output.exe",
)
]
search_path = sys.path
freezer = cx_Freeze.Freezer(
executables,
includes = [],
replacePaths = [],
compress = True,
optimizeFlag = True,
path = search_path,
targetDir = output_path,
zipIncludes = [],
silent = False,
)
freezer.Freeze()
Now run the command to start the freeze procedure:
> python setup.py
C:\Python39\lib\site-packages\cx_Freeze\common.py:124: UserWarning: camelCase values is obsolete and will be removed in the next major version -> use the new name 'target_name'
warnings.warn(
Traceback (most recent call last):
File "C:\Users\Gebruiker\Downloads\setup.py", line 36, in <module>
freezer = cx_Freeze.Freezer(
File "C:\Python39\lib\site-packages\cx_Freeze\freezer.py", line 90, in __init__
self.includeFiles = process_path_specs(includeFiles)
File "C:\Python39\lib\site-packages\cx_Freeze\common.py", line 60, in process_path_specs
for spec in specs:
TypeError: 'NoneType' object is not iterable
There you go. This is the error :-)
You can workaround this error, using parameters: includeFiles=[] zipIncludes=[]
Later I'll fix this.
Normally we use setup(), then this error doesn't arises.
Thanks @marcelotduarte ,
Your suggestion to add includeFiles=[]
and zipIncludes=[]
worked! The error is gone now. You're awesome!
PR #945 merged.
cx_Freeze 6.6 has just been released. Assuming this has been resolved. If you had issues please open a new issue.
When using the development version of
cx_Freeze
on Windows 10,Python 3.9
it crashes because of an error in'C:\Python39\lib\site-packages\cx_Freeze\common.py'
. Below is the detailed info.1. Installation
I just finished a fresh
Python 3.9
installation on my 64-bit Windows 10 computer:The
master
branch ofcx_Freeze
failed to install, so I tried the development branch:This installation was successful.
2. Use
When using
cx_Freeze
, it crashes with the following message:I hope this helps for debugging. Please let me know if you have a fix.