kboss/kgadget/ubuntu/kgadget_bak1.spec
2026-07-02 17:31:23 +08:00

81 lines
2.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- mode: python ; coding: utf-8 -*-
import os
import dataui
import confluent_kafka
from PyInstaller.utils.hooks import collect_dynamic_libs, collect_submodules
# ---- 定位 confluent_kafka.libs ----
kafka_libs_dir = os.path.join(
os.path.dirname(confluent_kafka.__file__),
'..',
'confluent_kafka.libs'
)
kafka_libs_dir = os.path.normpath(kafka_libs_dir)
if not os.path.exists(kafka_libs_dir):
alt_dir = os.path.join(
os.path.dirname(os.path.dirname(confluent_kafka.__file__)),
'confluent_kafka.libs'
)
if os.path.exists(alt_dir):
kafka_libs_dir = alt_dir
print(f"[SPEC] Kafka libs dir: {kafka_libs_dir}, exists: {os.path.exists(kafka_libs_dir)}")
# ---- 收集 numpy/pandas 动态库(若使用) ----
numpy_binaries = collect_dynamic_libs('numpy') if False else [] # 如果使用,改为 True
pandas_binaries = collect_dynamic_libs('pandas') if False else []
# 我们也可以直接通过 datas 包含它们的 .libs 目录(但更推荐用 collect_dynamic_libs
# 这里我们先用 collect_dynamic_libs 并合并到 binaries
all_binaries = numpy_binaries + pandas_binaries # 加入 kafka 吗?不,我们用 datas
duipath = os.path.dirname(dataui.__file__)
block_cipher = None
a = Analysis(
['../src/kgadget.py'],
pathex=['../src'],
binaries=all_binaries, # 包含 numpy/pandas 的 .so
datas=[
(f'{duipath}/tmpl/bricks/*.*', 'dataui/tmpl/bricks'),
(kafka_libs_dir, 'confluent_kafka.libs'), # 复制整个 kafka 目录
],
hiddenimports=[
'sqlite3',
'aiopg',
'aiomysql',
'confluent_kafka.admin',
],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='kgadget',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=False, # 务必关闭 UPX
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
onefile=False # 显式指定 onefile=False
)