update
This commit is contained in:
parent
75a3f81b7a
commit
242f578fad
@ -1 +1 @@
|
||||
pyinstaller --onedir -y --clean kgadget.spec
|
||||
pyinstaller -y --clean 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 模式(生成文件夹)
|
||||
)
|
||||
Loading…
x
Reference in New Issue
Block a user