-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.spec
More file actions
204 lines (191 loc) · 18.9 KB
/
Copy pathbuild.spec
File metadata and controls
204 lines (191 loc) · 18.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
# -*- mode: python ; coding: utf-8 -*-
import sys
import PyInstaller.config
# 核心配置(极简,避免冗余)
MAIN_SCRIPT = "main.py"
APP_NAME = "CoordinatePicker"
ICON_PATH = "icon.ico" # 如需图标,替换为.ico路径
# 体积优化:排除明显无用的大模块
EXCLUDE_MODULES = [
# OpenCV未使用的模块
"cv2.config-3", "cv2.config", "cv2.load_config_py2",
# Pillow未使用的插件和模块
"PIL.AvifImagePlugin", "PIL.BdfFontFile", "PIL.BlpImagePlugin", "PIL.BmpImagePlugin", "PIL.BufrStubImagePlugin", "PIL.ContainerIO",
"PIL.CurImagePlugin", "PIL.DcxImagePlugin", "PIL.DdsImagePlugin", "PIL.EpsImagePlugin", "PIL.FitsImagePlugin", "PIL.ImageMath",
"PIL.FliImagePlugin", "PIL.FontFile", "PIL.FpxImagePlugin", "PIL.FtexImagePlugin", "PIL.GifImagePlugin", "PIL.GbrImagePlugin",
"PIL.GdImageFile", "PIL.GribStubImagePlugin", "PIL.Hdf5StubImagePlugin", "PIL.IcnsImagePlugin", "PIL.IcoImagePlugin", "PIL.JpegPresets",
"PIL.ImImagePlugin", "PIL.ImageCms", "PIL.ImageDraw", "PIL.ImageDraw2", "PIL.ImageEnhance", "PIL.ImageFilter", "PIL.JpegImagePlugin",
"PIL.ImageFont", "PIL.ImageGrab", "PIL.ImageMorph", "PIL.ImageOps", "PIL.ImagePath", "PIL.ImageQt", "PIL.ImageShow", "PIL.ImageStat",
"PIL.ImageText", "PIL.ImageTransform", "PIL.ImageWin", "PIL.ImtImagePlugin", "PIL.IptcImagePlugin", "PIL.Jpeg2KImagePlugin",
"PIL.McIdasImagePlugin", "PIL.MicImagePlugin", "PIL.MpegImagePlugin", "PIL.MpoImagePlugin", "PIL.MspImagePlugin", "PIL.PpmImagePlugin",
"PIL.PSDraw", "PIL.PalmImagePlugin", "PIL.PcdImagePlugin", "PIL.PcfFontFile", "PIL.PcxImagePlugin", "PIL.PdfImagePlugin",
"PIL.PdfParser", "PIL.PixarImagePlugin", "PIL.PsdImagePlugin", "PIL.QoiImagePlugin", "PIL.SgiImagePlugin", "PIL._imagingmath",
"PIL.SpiderImagePlugin", "PIL.SunImagePlugin", "PIL.TarIO", "PIL.TgaImagePlugin", "PIL.TiffImagePlugin",
"PIL.WalImageFile", "PIL.WebPImagePlugin", "PIL.WmfImagePlugin", "PIL.XVThumbImagePlugin", "PIL.XbmImagePlugin",
"PIL.XpmImagePlugin", "PIL.__main__", "PIL._avif", "PIL._imagingcms", "PIL._imagingft", "PIL._imagingmorph",
"PIL._tkinter_finder", "PIL._typing", "PIL._webp", "PIL.features", "PIL.report", "PIL.GribImagePlugin", "PIL.Hdf5ImagePlugin",
# Python标准库未使用模块
"tkinter.__main__", "tkinter.colorchooser", "tkinter.dnd", "tkinter.font", "tkinter.scrolledtext",
"tkinter.test", "tkinter.test.support", "tkinter.test.test_tkinter", "tkinter.test.test_tkinter.test_colorchooser",
"tkinter.test.test_tkinter.test_font", "tkinter.test.test_tkinter.test_geometry_managers",
"tkinter.test.test_tkinter.test_images", "tkinter.test.test_tkinter.test_loadtk", "tkinter.test.test_tkinter.test_messagebox",
"tkinter.test.test_tkinter.test_misc", "tkinter.test.test_tkinter.test_simpledialog", "tkinter.test.test_tkinter.test_text",
"tkinter.test.test_tkinter.test_variables", "tkinter.test.test_tkinter.test_widgets", "tkinter.test.test_ttk",
"tkinter.test.test_ttk.test_extensions", "tkinter.test.test_ttk.test_style", "tkinter.test.test_ttk.test_widgets",
"tkinter.test.widget_tests", "tkinter.tixtkinter.commondialog", "tkinter.test.test_ttk", "tkinter.tix",
"_aix_support", "_asyncio", "_bootsubprocess", "_bz2", "_compression", "_ctypes", "_ctypes_test", "_decimal", "_elementtree",
"_hashlib", "_lzma", "_markupbase", "_msi", "_multiprocessing", "_osx_support", "_overlapped", "_py_abc", "_pydecimal", "_pyio",
"_queue", "_sitebuiltins", "_socket", "_sqlite3", "cryptography", "_ssl", "_strptime", "_testbuffer", "_testcapi", "_testconsole",
"_testimportmultiple", "_testinternalcapi", "_testmultiphase", "_threading_local", "_uuid", "_zoneinfo", "aifc", "antigravity",
"argparse", "asynchat", "asyncio", "asyncore", "backend_interagg", "base64", "bdb", "binhex", "bz2", "cProfile", "calendar", "cgi",
"cgitb", "chunk", "cmd", "code", "codeop", "colorsys", "compileall", "concurrent", "configparser", "crypt", "csv", "ctypes", "curses",
"dataclasses", "datalore", "dbm", "decimal", "difflib", "dis", "distutils", "doctest", "ensurepip", "filecmp", "fileinput", "fractions",
"ftplib", "getopt", "getpass", "gettext", "glob", "graphlib", "gzip", "hashlib", "heapq", "hmac", "html", "http", "idlelib", "imaplib",
"imghdr", "imp", "inspect", "ipaddress", "json", "lib2to3", "locale", "lzma", "mailbox", "mailcap", "main", "mimetypes", "modulefinder",
"msilib", "multiprocessing", "netrc", "nntplib", "nturl2path", "opcode", "optparse", "pathlib", "pdb", "pickletools", "pipes", "pkgutil",
"plistlib", "poplib", "pprint", "profile", "pstats", "pty", "py_compile", "pyclbr", "pydoc", "pydoc_data", "pyexpat", "queue", "quopri",
"rlcompleter", "runpy", "sched", "secrets", "select", "selectors", "shelve", "shlex", "site", "sitecustomize", "smtpd", "smtplib", "sndhdr",
"socket", "socketserver", "sqlite3", "ssl", "statistics", "stringprep", "struct", "sunau", "symtable", "sysconfig", "tabnanny", "tarfile",
"telnetlib", "test", "this", "timeit", "trace", "tracemalloc", "tty", "turtle", "turtledemo", "unicodedata", "unittest", "urllib", "uu",
"uuid", "venv", "wave", "webbrowser", "winsound", "wsgiref", "xdrlib", "xml", "xmlrpc", "zipapp", "zipfile", "zipimport", "zoneinfo",
# NumPy未使用的子模块
"numpy._configtool", "numpy._core._multiarray_tests", "numpy._core._operand_flag_tests", "numpy._core._rational_tests", "numpy._core._simd",
"numpy._core._struct_ufunc_tests", "numpy._core._umath_tests", "numpy._core.cversions", "numpy._core.defchararray", "numpy._core.strings",
"numpy._pyinstaller", "numpy._pyinstaller.hook-numpy", "numpy._pyinstaller.tests", "numpy._typing._add_docstring", "numpy._typing._extended_precision",
"numpy._utils._pep440", "numpy.char", "numpy.compat", "numpy.compat.py3k", "numpy.compat.tests", "numpy.conftest", "numpy.core._dtype", "numpy.core._dtype_ctypes",
"numpy.core._internal", "numpy.core._multiarray_umath", "numpy.core.arrayprint", "numpy.core.defchararray", "numpy.core.einsumfunc", "numpy.core.fromnumeric",
"numpy.core.function_base", "numpy.core.getlimits", "numpy.core.numeric", "numpy.core.numerictypes", "numpy.core.overrides", "numpy.core.records",
"numpy.core.shape_base", "numpy.core.umath", "numpy.ctypeslib", "numpy.distutils", "numpy.distutils._shell_utils", "numpy.distutils.armccompiler",
"numpy.distutils.ccompiler", "numpy.distutils.ccompiler_opt", "numpy.distutils.command", "numpy.distutils.command.autodist", "numpy.distutils.command.bdist_rpm",
"numpy.distutils.command.build", "numpy.distutils.command.build_clib", "numpy.distutils.command.build_ext", "numpy.distutils.command.build_py",
"numpy.distutils.command.build_scripts", "numpy.distutils.command.build_src", "numpy.distutils.command.config", "numpy.distutils.command.config_compiler",
"numpy.distutils.command.develop", "numpy.distutils.command.egg_info", "numpy.distutils.command.install", "numpy.distutils.command.install_clib",
"numpy.distutils.command.install_data", "numpy.distutils.command.install_headers", "numpy.distutils.command.sdist", "numpy.distutils.conv_template",
"numpy.distutils.core", "numpy.distutils.cpuinfo", "numpy.distutils.exec_command", "numpy.distutils.extension", "numpy.distutils.fcompiler",
"numpy.distutils.fcompiler.absoft", "numpy.distutils.fcompiler.arm", "numpy.distutils.fcompiler.compaq", "numpy.distutils.fcompiler.environment",
"numpy.distutils.fcompiler.fujitsu", "numpy.distutils.fcompiler.g95", "numpy.distutils.fcompiler.gnu", "numpy.distutils.fcompiler.hpux",
"numpy.distutils.fcompiler.ibm", "numpy.distutils.fcompiler.intel", "numpy.distutils.fcompiler.lahey", "numpy.distutils.fcompiler.mips",
"numpy.distutils.fcompiler.nag", "numpy.distutils.fcompiler.none", "numpy.distutils.fcompiler.nv", "numpy.distutils.fcompiler.pathf95",
"numpy.distutils.fcompiler.pg", "numpy.distutils.fcompiler.sun", "numpy.distutils.fcompiler.vast", "numpy.distutils.from_template",
"numpy.distutils.fujitsuccompiler", "numpy.distutils.intelccompiler", "numpy.distutils.lib2def", "numpy.distutils.line_endings",
"numpy.distutils.log", "numpy.distutils.mingw32ccompiler", "numpy.distutils.misc_util", "numpy.distutils.msvc9compiler",
"numpy.distutils.msvccompiler", "numpy.distutils.npy_pkg_config", "numpy.distutils.numpy_distribution", "numpy.distutils.pathccompiler",
"numpy.distutils.system_info", "numpy.distutils.tests", "numpy.distutils.tests.test_build_ext", "numpy.distutils.tests.test_ccompiler_opt",
"numpy.distutils.tests.test_ccompiler_opt_conf", "numpy.distutils.tests.test_exec_command", "numpy.distutils.tests.test_fcompiler",
"numpy.distutils.tests.test_fcompiler_gnu", "numpy.distutils.tests.test_fcompiler_intel", "numpy.distutils.tests.test_fcompiler_nagfor",
"numpy.distutils.tests.test_from_template", "numpy.distutils.tests.test_log", "numpy.distutils.tests.test_mingw32ccompiler", "numpy.distutils.tests.test_misc_util",
"numpy.distutils.tests.test_npy_pkg_config", "numpy.distutils.tests.test_shell_utils", "numpy.distutils.tests.test_system_info", "numpy.distutils.tests.utilities",
"numpy.distutils.unixccompiler", "numpy.f2py", "numpy.f2py.__main__", "numpy.f2py.__version__", "numpy.f2py._backends", "numpy.f2py._backends._backend",
"numpy.f2py._backends._distutils", "numpy.f2py._backends._meson", "numpy.f2py._isocbind", "numpy.f2py._src_pyf", "numpy.f2py.auxfuncs", "numpy.f2py.capi_maps",
"numpy.f2py.cb_rules", "numpy.f2py.cfuncs", "numpy.f2py.common_rules", "numpy.f2py.crackfortran", "numpy.f2py.diagnose", "numpy.f2py.f2py2e",
"numpy.f2py.f90mod_rules", "numpy.f2py.func2subr", "numpy.f2py.rules", "numpy.f2py.symbolic", "numpy.f2py.tests", "numpy.f2py.use_rules",
"numpy.fft", "numpy.fft._helper", "numpy.fft._pocketfft", "numpy.fft._pocketfft_umath", "numpy.fft.helper", "numpy.fft.tests", "numpy.fft.tests.test_helper",
"numpy.fft.tests.test_pocketfft", "numpy.lib._user_array_impl", "numpy.lib.recfunctions", "numpy.lib.tests", "numpy.lib.tests.test__datasource",
"numpy.lib.tests.test__iotools", "numpy.lib.tests.test__version", "numpy.lib.tests.test_array_utils", "numpy.lib.tests.test_arraypad", "numpy.lib.tests.test_arraysetops",
"numpy.lib.tests.test_arrayterator", "numpy.lib.tests.test_format", "numpy.lib.tests.test_function_base", "numpy.lib.tests.test_histograms", "numpy.lib.tests.test_index_tricks",
"numpy.lib.tests.test_io", "numpy.lib.tests.test_loadtxt", "numpy.lib.tests.test_mixins", "numpy.lib.tests.test_nanfunctions", "numpy.lib.tests.test_packbits",
"numpy.lib.tests.test_polynomial", "numpy.lib.tests.test_recfunctions", "numpy.lib.tests.test_regression", "numpy.lib.tests.test_shape_base", "numpy.lib.tests.test_stride_tricks",
"numpy.lib.tests.test_twodim_base", "numpy.lib.tests.test_type_check", "numpy.lib.tests.test_ufunclike", "numpy.lib.tests.test_utils", "numpy.lib.user_array",
"numpy.linalg.lapack_lite", "numpy.linalg.tests", "numpy.linalg.tests.test_deprecations", "numpy.linalg.tests.test_linalg", "numpy.linalg.tests.test_regression",
"numpy.ma", "numpy.ma.core", "numpy.ma.extras", "numpy.ma.mrecords", "numpy.ma.tests", "numpy.ma.tests.test_arrayobject", "numpy.ma.tests.test_core", "numpy.ma.tests.test_deprecations",
"numpy.ma.tests.test_extras", "numpy.ma.tests.test_mrecords", "numpy.ma.tests.test_old_ma", "numpy.ma.tests.test_regression", "numpy.ma.tests.test_subclassing",
"numpy.ma.testutils", "numpy.ma.timer_comparison", "numpy.matlib", "numpy.matrixlib.tests", "numpy.matrixlib.tests.test_defmatrix", "numpy.matrixlib.tests.test_interaction",
"numpy.matrixlib.tests.test_masked_matrix", "numpy.matrixlib.tests.test_matrix_linalg", "numpy.matrixlib.tests.test_multiarray", "numpy.matrixlib.tests.test_numeric",
"numpy.matrixlib.tests.test_regression", "numpy.polynomial", "numpy.polynomial._polybase", "numpy.polynomial.chebyshev", "numpy.polynomial.hermite", "numpy.polynomial.hermite_e",
"numpy.polynomial.laguerre", "numpy.polynomial.legendre", "numpy.polynomial.polynomial", "numpy.polynomial.polyutils", "numpy.polynomial.tests", "numpy.polynomial.tests.test_chebyshev",
"numpy.polynomial.tests.test_classes", "numpy.polynomial.tests.test_hermite", "numpy.polynomial.tests.test_hermite_e", "numpy.polynomial.tests.test_laguerre",
"numpy.polynomial.tests.test_legendre", "numpy.polynomial.tests.test_polynomial", "numpy.polynomial.tests.test_polyutils", "numpy.polynomial.tests.test_printing",
"numpy.polynomial.tests.test_symbol", "numpy.random", "numpy.random._bounded_integers", "numpy.random._common", "numpy.random._generator", "numpy.random._mt19937",
"numpy.random._pcg64", "numpy.random._philox", "numpy.random._pickle", "numpy.random._sfc64", "numpy.random.bit_generator", "numpy.random.mtrand", "numpy.random.tests",
"numpy.random.tests.data", "numpy.random.tests.test_direct", "numpy.random.tests.test_extending", "numpy.random.tests.test_generator_mt19937", "numpy.random.tests.test_generator_mt19937_regressions",
"numpy.random.tests.test_random", "numpy.random.tests.test_randomstate", "numpy.random.tests.test_randomstate_regression", "numpy.random.tests.test_regression",
"numpy.random.tests.test_seed_sequence", "numpy.random.tests.test_smoke", "numpy.rec", "numpy.strings", "numpy.testing", "numpy.testing._private", "numpy.testing._private.extbuild",
"numpy.testing._private.utils", "numpy.testing.overrides", "numpy.testing.print_coercion_tables", "numpy.testing.tests", "numpy.testing.tests.test_utils", "numpy.tests",
"numpy.tests.test__all__", "numpy.tests.test_configtool", "numpy.tests.test_ctypeslib", "numpy.tests.test_lazyloading", "numpy.tests.test_matlib", "numpy.tests.test_numpy_config",
"numpy.tests.test_numpy_version", "numpy.tests.test_public_api", "numpy.tests.test_reloading", "numpy.tests.test_scripts", "numpy.tests.test_warnings", "numpy.typing",
"numpy.typing.mypy_plugin", "numpy.typing.tests", "numpy.typing.tests.test_isfile", "numpy.typing.tests.test_runtime", "numpy.typing.tests.test_typing",
# 未使用的encoding
"encodings.ascii", "encodings.base64_codec", "encodings.big5", "encodings.big5hkscs", "encodings.bz2_codec", "encodings.charmap",
"encodings.cp037", "encodings.cp1006", "encodings.cp1026", "encodings.cp1125", "encodings.cp1140", "encodings.cp1250", "encodings.cp1251",
"encodings.cp1252", "encodings.cp1253", "encodings.cp1254", "encodings.cp1255", "encodings.cp1256", "encodings.cp1257", "encodings.cp1258",
"encodings.cp273", "encodings.cp424", "encodings.cp437", "encodings.cp500", "encodings.cp720", "encodings.cp737", "encodings.cp775",
"encodings.cp850", "encodings.cp852", "encodings.cp855", "encodings.cp856", "encodings.cp857", "encodings.cp858", "encodings.cp860",
"encodings.cp861", "encodings.cp862", "encodings.cp863", "encodings.cp864", "encodings.cp865", "encodings.cp866", "encodings.cp869",
"encodings.cp874", "encodings.cp875", "encodings.cp932", "encodings.cp949", "encodings.cp950", "encodings.euc_jis_2004", "encodings.euc_jisx0213",
"encodings.euc_jp", "encodings.euc_kr", "encodings.gb18030", "encodings.gb2312", "encodings.hex_codec", "encodings.hp_roman8", "encodings.hz",
"encodings.idna", "encodings.iso2022_jp", "encodings.iso2022_jp_1", "encodings.iso2022_jp_2", "encodings.iso2022_jp_2004", "encodings.iso2022_jp_3",
"encodings.iso2022_jp_ext", "encodings.iso2022_kr", "encodings.iso8859_1", "encodings.iso8859_10", "encodings.iso8859_11", "encodings.iso8859_13",
"encodings.iso8859_14", "encodings.iso8859_15", "encodings.iso8859_16", "encodings.iso8859_2", "encodings.iso8859_3", "encodings.iso8859_4",
"encodings.iso8859_5", "encodings.iso8859_6", "encodings.iso8859_7", "encodings.iso8859_8", "encodings.iso8859_9", "encodings.johab",
"encodings.koi8_r", "encodings.koi8_t", "encodings.koi8_u", "encodings.kz1048", "encodings.latin_1", "encodings.mac_arabic", "encodings.mac_croatian",
"encodings.mac_cyrillic", "encodings.mac_farsi", "encodings.mac_greek", "encodings.mac_iceland", "encodings.mac_latin2", "encodings.mac_roman",
"encodings.mac_romanian", "encodings.mac_turkish", "encodings.mbcs", "encodings.oem", "encodings.palmos", "encodings.ptcp154", "encodings.punycode",
"encodings.quopri_codec", "encodings.raw_unicode_escape", "encodings.rot_13", "encodings.shift_jis", "encodings.shift_jis_2004", "encodings.shift_jisx0213",
"encodings.tis_620", "encodings.undefined", "encodings.unicode_escape", "encodings.utf_16", "encodings.utf_16_be", "encodings.utf_16_le","encodings.utf_32",
"encodings.utf_32_be", "encodings.utf_32_le", "encodings.utf_7", "encodings.utf_8_sig", "encodings.uu_codec", "encodings.zlib_codec",
]
#UPX压缩优化:排除无法压缩的系统DLL,避免报错
PyInstaller.config.CONF["use_upx"] = True
# UPX参数:极致压缩+排除系统DLL(api-ms-win-*/python3.dll等)
UPX_ARGS = [
"--best", "--lzma", # 极致压缩
"--exclude", "api-ms-win-*.dll", # 排除系统API DLL
"--exclude", "python3.dll", # 排除Python3核心DLL(无法压缩)
"--exclude", "ucrtbase.dll", # 排除C运行时DLL
"--exclude", "vcruntime140.dll", # 排除VC运行时DLL
]
# ================= 关键:简化打包配置,避免冲突 =================
a = Analysis(
[MAIN_SCRIPT],
pathex=[], # 同级目录无需额外路径
binaries=[],
datas=[('icon.ico', '.')],
HIDDEN_IMPORTS = [
# Tkinter相关(基于您的追踪)
"tkinter.ttk", "tkinter.filedialog", "tkinter.messagebox","tkinter.simpledialog",
"tkinter.constants", "tkinter.dialog", "tkinter.commondialog","_tkinter",
# Pillow相关(基于您的追踪)
"PIL.ExifTags", "PIL.Image", "PIL.ImageFile", "PIL.ImageMode", "PIL.ImageTk", "PIL.TiffTags", "PIL._binary", "PIL._imagingtk",
"PIL._deprecate", "PIL._imaging", "PIL._util", "PIL._version", "PIL.GimpGradientFile", "PIL.GimpPaletteFile",
"PIL.ImageChops", "PIL.ImageColor", "PIL.ImagePalette", "PIL.ImageSequence", "PIL.PaletteFile", "PIL.PngImagePlugin",
# OpenCV相关(基于您的追踪)
"cv2.gapi", "cv2.utils", "cv2.misc", "cv2.misc.version", "cv2.data", "cv2.typing", "cv2.load_config_py3", "cv2.mat_wrapper",
# NumPy相关(基于您的追踪)
"numpy", "numpy.core", "numpy.core.multiarray", "numpy.core._utils", "numpy.lib.stride_tricks",
"numpy.matrixlib", "numpy.linalg"
],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=EXCLUDE_MODULES,
cipher=None, # 禁用加密(避免体积+路径问题)
noarchive=False,
)
# 生成PYZ包(不额外配置,用默认)
pyz = PYZ(
a.pure,
a.zipped_data,
cipher=None,
)
# 生成EXE(关键:目录模式+打开控制台,便于排查错误)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name=APP_NAME,
debug=False,
bootloader_ignore_signals=True, # 解决多线程兼容性问题
strip=False, # Windows下保留符号,避免运行错误
upx=True,
runtime_tmpdir=None,
console=False,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon=ICON_PATH if ICON_PATH else None,
)