Files
tingquanzhushou/tingquan_assistant.spec
2025-02-20 20:20:19 +08:00

121 lines
2.6 KiB
Python

# -*- mode: python ; coding: utf-8 -*-
import os
import sys
from PyInstaller.utils.hooks import collect_data_files, collect_submodules
# 读取版本号
with open('version.txt', 'r') as f:
VERSION = f.read().strip()
# 收集所有Python文件
python_files = []
for root, dirs, files in os.walk('.'):
if '__pycache__' in root or '.git' in root or 'venv' in root:
continue
for file in files:
if file.endswith('.py') and not file.startswith('test_'):
rel_path = os.path.relpath(os.path.join(root, file))
python_files.append(rel_path)
# 收集数据文件
datas = [
('version.txt', '.'),
('two.ico', '.'),
('file_version_info.txt', '.'),
('utils', 'utils'),
('services', 'services'),
('gui', 'gui'),
]
# 添加其他资源文件
if os.path.exists('requirements.txt'):
datas.append(('requirements.txt', '.'))
a = Analysis(
['tingquan_assistant.py'] + python_files,
pathex=[],
binaries=[],
datas=datas,
hiddenimports=[
'PyQt5',
'PyQt5.QtCore',
'PyQt5.QtGui',
'PyQt5.QtWidgets',
'requests',
'json',
'logging',
'win32api',
'win32con',
'win32gui',
],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[
'_tkinter',
'tkinter',
'PIL.ImageTk',
'PIL.ImageWin',
'numpy',
'pandas',
'matplotlib',
'scipy',
'PyQt5.QtWebEngineWidgets',
'PyQt5.QtWebEngine',
],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=None,
noarchive=False,
)
# 过滤掉不需要的二进制文件
def remove_from_list(source, patterns):
for file in source[:]:
for pattern in patterns:
if pattern in file[0]:
source.remove(file)
break
remove_from_list(a.binaries, [
'Qt5WebEngine',
'Qt5WebEngineCore',
'Qt5WebEngineWidgets',
'Qt5Designer',
'Qt5Qml',
])
pyz = PYZ(a.pure, a.zipped_data, cipher=None)
exe = EXE(
pyz,
a.scripts,
[],
exclude_binaries=True,
name=f'听泉助手v{VERSION}',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon=['two.ico'],
version='file_version_info.txt',
)
coll = COLLECT(
exe,
a.binaries,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name=f'听泉助手v{VERSION}',
)