diff --git a/kgadget/ubuntu/kgadget.spec b/kgadget/ubuntu/kgadget.spec index 8205436..56fb832 100644 --- a/kgadget/ubuntu/kgadget.spec +++ b/kgadget/ubuntu/kgadget.spec @@ -1,81 +1,48 @@ # -*- 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) +a = Analysis(['../src/kgadget.py'], + pathex=['../src'], + binaries=[], + datas=[ + (f'{duipath}/tmpl/bricks/*.*', 'dataui/tmpl/bricks') + ], + hiddenimports=[ + 'sqlite3', + 'aiopg', + 'aiomysql' + ], + 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 -) \ No newline at end of file +exe = EXE(pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + [], + name='kgadget', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + upx_exclude=[], + runtime_tmpdir=None, + console=True, + disable_windowed_traceback=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None ) diff --git a/kgadget/ubuntu/kgadget_bak1.spec b/kgadget/ubuntu/kgadget_bak1.spec new file mode 100644 index 0000000..8205436 --- /dev/null +++ b/kgadget/ubuntu/kgadget_bak1.spec @@ -0,0 +1,81 @@ +# -*- 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 +) \ No newline at end of file