import sys from cx_Freeze import setup, Executable from cx_Freeze.finder import ModuleFinder sys.setrecursionlimit(5000) _orig_scan_code = ModuleFinder._scan_code _scanning_codes = set() def _scan_code(self, module, deferred_imports, code=None, top_level=True): target = code if code is not None else getattr(module, "code", None) if target is not None: marker = id(target) if marker in _scanning_codes: return None _scanning_codes.add(marker) try: return _orig_scan_code(self, module, deferred_imports, code, top_level) finally: if target is not None: _scanning_codes.discard(id(target)) ModuleFinder._scan_code = _scan_code # 创建可执行文件的配置 executableApp = Executable( script="index.py", target_name="pyapp", ) # 打包的参数配置 options = { "build_exe": { "packages": ["custom_plugins"], "includes": ["service.scene_set", "pillow_avif", "zmq"], "build_exe": "./dist/", "excludes": [ "scipy", "skimage", "sklearn", "numba", "llvmlite", "matplotlib", "torch", "tensorflow", "IPython", "pytest", "notebook", "jupyter", "PyQt5", "PyQt6", "PySide2", "tkinter", ], "include_files": [ "config.ini", "action.json", "action_tabs.json", "sys_configs.json", # "database.db", # "custom_plugins/", ], "optimize": 2, } } setup( name="pyapp", version="1.0", description="python app", options=options, executables=[executableApp], )