From 242f578fadba0537ab5777826c5970b7db46a4a0 Mon Sep 17 00:00:00 2001 From: ping <1017253325@qq.com> Date: Thu, 2 Jul 2026 16:35:19 +0800 Subject: [PATCH] update --- kgadget/ubuntu/build.sh | 2 +- kgadget/ubuntu/kgadget.spec | 43 +++++++++++++++++++++---------------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/kgadget/ubuntu/build.sh b/kgadget/ubuntu/build.sh index f41c03b..6f1848b 100644 --- a/kgadget/ubuntu/build.sh +++ b/kgadget/ubuntu/build.sh @@ -1 +1 @@ -pyinstaller --onedir -y --clean kgadget.spec +pyinstaller -y --clean kgadget.spec diff --git a/kgadget/ubuntu/kgadget.spec b/kgadget/ubuntu/kgadget.spec index d100176..4878ea8 100644 --- a/kgadget/ubuntu/kgadget.spec +++ b/kgadget/ubuntu/kgadget.spec @@ -2,10 +2,11 @@ import os import dataui -import confluent_kafka # 新增:用于获取动态库路径 +import confluent_kafka from PyInstaller.utils.hooks import collect_dynamic_libs -# ---- 定位 confluent_kafka.libs 目录(关键) ---- +# ---- 定位 confluent_kafka.libs 目录 ---- +# 根据你的实际路径,该方法会得到 /d/zhc/.local/lib/python3.10/site-packages/confluent_kafka.libs kafka_libs_dir = os.path.join( os.path.dirname(confluent_kafka.__file__), '..', @@ -13,7 +14,7 @@ kafka_libs_dir = os.path.join( ) kafka_libs_dir = os.path.normpath(kafka_libs_dir) -# 如果目录不存在,尝试另一种常见位置(有时 .libs 直接位于 site-packages 下) +# 如果上述路径不存在,尝试另一种可能的布局(备选) if not os.path.exists(kafka_libs_dir): alt_dir = os.path.join( os.path.dirname(os.path.dirname(confluent_kafka.__file__)), @@ -22,35 +23,38 @@ if not os.path.exists(kafka_libs_dir): if os.path.exists(alt_dir): kafka_libs_dir = alt_dir -# 调试输出(打包时会打印在控制台,方便确认) -print(f"[SPEC] Using kafka libs dir: {kafka_libs_dir}, exists: {os.path.exists(kafka_libs_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 [] # 暂不启用,若有问题可单独处理 -# scipy_binaries = collect_dynamic_libs('scipy') +# 如果仍然不存在,可以硬编码为你的实际路径(但建议使用动态方式) +# kafka_libs_dir = "/d/zhc/.local/lib/python3.10/site-packages/confluent_kafka.libs" + +# ---- 收集其他动态库(如 numpy, pandas) ---- +# 如果你确实使用了它们,可以取消注释并同样处理 +numpy_binaries = collect_dynamic_libs('numpy') if False else [] pandas_binaries = collect_dynamic_libs('pandas') if False else [] -# 这里我们只关心 kafka,但为了兼容,保留一个空列表 -all_binaries = [] # 如果你还有其他二进制文件,可以合并进来 +# 如果有其他二进制文件,可以合并到 all_binaries +all_binaries = [] # 这里暂时为空,因为我们用 datas 处理了 kafka duipath = os.path.dirname(dataui.__file__) block_cipher = None -# ---- Analysis 部分 ---- +# ---- Analysis ---- a = Analysis( ['../src/kgadget.py'], pathex=['../src'], - binaries=all_binaries, # 暂时为空,后续如有其他 .so 可加入 + binaries=all_binaries, # 保留,以防将来需要 datas=[ (f'{duipath}/tmpl/bricks/*.*', 'dataui/tmpl/bricks'), - # 新增:将整个 confluent_kafka.libs 目录复制到打包目录的 confluent_kafka.libs 下 + # 关键:将整个 confluent_kafka.libs 目录复制到打包目录的 confluent_kafka.libs 下 (kafka_libs_dir, 'confluent_kafka.libs'), ], hiddenimports=[ 'sqlite3', 'aiopg', 'aiomysql', - 'confluent_kafka.admin', # 确保子模块被包含 - # 如果你还用到其他子模块,可以继续添加 + 'confluent_kafka.admin', # 确保子模块被包含 + # 如果你使用了其他子模块(如 avro, schema_registry),也在这里添加 ], hookspath=[], hooksconfig={}, @@ -64,7 +68,7 @@ a = Analysis( pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) -# ---- EXE 部分 ---- +# ---- EXE ---- exe = EXE( pyz, a.scripts, @@ -76,12 +80,13 @@ exe = EXE( debug=False, bootloader_ignore_signals=False, strip=False, - upx=True, + upx=False, # 关闭 UPX,防止压缩动态库 upx_exclude=[], - runtime_tmpdir=None, # 如果仍出现解压错误,可在这里指定一个可写目录 + runtime_tmpdir=None, # 你可以指定一个可写目录,如 '/tmp/kgadget' console=True, disable_windowed_traceback=False, target_arch=None, codesign_identity=None, - entitlements_file=None + entitlements_file=None, + onefile=False # 使用 onedir 模式(生成文件夹) ) \ No newline at end of file