update
This commit is contained in:
parent
3e07f7aea7
commit
43dfaf1a85
@ -2,32 +2,55 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import dataui
|
import dataui
|
||||||
|
import confluent_kafka # 新增:用于获取动态库路径
|
||||||
|
from PyInstaller.utils.hooks import collect_dynamic_libs
|
||||||
|
|
||||||
from PyInstaller.utils.hooks import collect_dynamic_libs # 新增导入
|
# ---- 定位 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)
|
||||||
|
|
||||||
# 收集所有科学计算库的动态库
|
# 如果目录不存在,尝试另一种常见位置(有时 .libs 直接位于 site-packages 下)
|
||||||
numpy_binaries = collect_dynamic_libs('numpy')
|
if not os.path.exists(kafka_libs_dir):
|
||||||
# scipy_binaries = collect_dynamic_libs('scipy') # 如果使用了 scipy
|
alt_dir = os.path.join(
|
||||||
pandas_binaries = collect_dynamic_libs('pandas') # 如果使用了 pandas
|
os.path.dirname(os.path.dirname(confluent_kafka.__file__)),
|
||||||
kafka_binaries = collect_dynamic_libs('confluent_kafka')
|
'confluent_kafka.libs'
|
||||||
|
)
|
||||||
|
if os.path.exists(alt_dir):
|
||||||
|
kafka_libs_dir = alt_dir
|
||||||
|
|
||||||
# 合并所有动态库列表
|
# 调试输出(打包时会打印在控制台,方便确认)
|
||||||
all_binaries = kafka_binaries
|
print(f"[SPEC] Using 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')
|
||||||
|
pandas_binaries = collect_dynamic_libs('pandas') if False else []
|
||||||
|
# 这里我们只关心 kafka,但为了兼容,保留一个空列表
|
||||||
|
all_binaries = [] # 如果你还有其他二进制文件,可以合并进来
|
||||||
|
|
||||||
duipath = os.path.dirname(dataui.__file__)
|
duipath = os.path.dirname(dataui.__file__)
|
||||||
|
|
||||||
block_cipher = None
|
block_cipher = None
|
||||||
|
|
||||||
a = Analysis(['../src/kgadget.py'],
|
# ---- Analysis 部分 ----
|
||||||
|
a = Analysis(
|
||||||
|
['../src/kgadget.py'],
|
||||||
pathex=['../src'],
|
pathex=['../src'],
|
||||||
binaries=all_binaries,
|
binaries=all_binaries, # 暂时为空,后续如有其他 .so 可加入
|
||||||
datas=[
|
datas=[
|
||||||
(f'{duipath}/tmpl/bricks/*.*', 'dataui/tmpl/bricks')
|
(f'{duipath}/tmpl/bricks/*.*', 'dataui/tmpl/bricks'),
|
||||||
|
# 新增:将整个 confluent_kafka.libs 目录复制到打包目录的 confluent_kafka.libs 下
|
||||||
|
(kafka_libs_dir, 'confluent_kafka.libs'),
|
||||||
],
|
],
|
||||||
hiddenimports=[
|
hiddenimports=[
|
||||||
'sqlite3',
|
'sqlite3',
|
||||||
'aiopg',
|
'aiopg',
|
||||||
'aiomysql'
|
'aiomysql',
|
||||||
|
'confluent_kafka.admin', # 确保子模块被包含
|
||||||
|
# 如果你还用到其他子模块,可以继续添加
|
||||||
],
|
],
|
||||||
hookspath=[],
|
hookspath=[],
|
||||||
hooksconfig={},
|
hooksconfig={},
|
||||||
@ -36,11 +59,14 @@ a = Analysis(['../src/kgadget.py'],
|
|||||||
win_no_prefer_redirects=False,
|
win_no_prefer_redirects=False,
|
||||||
win_private_assemblies=False,
|
win_private_assemblies=False,
|
||||||
cipher=block_cipher,
|
cipher=block_cipher,
|
||||||
noarchive=False)
|
noarchive=False
|
||||||
pyz = PYZ(a.pure, a.zipped_data,
|
)
|
||||||
cipher=block_cipher)
|
|
||||||
|
|
||||||
exe = EXE(pyz,
|
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
|
||||||
|
|
||||||
|
# ---- EXE 部分 ----
|
||||||
|
exe = EXE(
|
||||||
|
pyz,
|
||||||
a.scripts,
|
a.scripts,
|
||||||
a.binaries,
|
a.binaries,
|
||||||
a.zipfiles,
|
a.zipfiles,
|
||||||
@ -52,9 +78,10 @@ exe = EXE(pyz,
|
|||||||
strip=False,
|
strip=False,
|
||||||
upx=True,
|
upx=True,
|
||||||
upx_exclude=[],
|
upx_exclude=[],
|
||||||
runtime_tmpdir=None,
|
runtime_tmpdir=None, # 如果仍出现解压错误,可在这里指定一个可写目录
|
||||||
console=True,
|
console=True,
|
||||||
disable_windowed_traceback=False,
|
disable_windowed_traceback=False,
|
||||||
target_arch=None,
|
target_arch=None,
|
||||||
codesign_identity=None,
|
codesign_identity=None,
|
||||||
entitlements_file=None )
|
entitlements_file=None
|
||||||
|
)
|
||||||
60
kgadget/ubuntu/kgadget_bak.spec
Normal file
60
kgadget/ubuntu/kgadget_bak.spec
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
# -*- mode: python ; coding: utf-8 -*-
|
||||||
|
|
||||||
|
import os
|
||||||
|
import dataui
|
||||||
|
|
||||||
|
from PyInstaller.utils.hooks import collect_dynamic_libs # 新增导入
|
||||||
|
|
||||||
|
# 收集所有科学计算库的动态库
|
||||||
|
numpy_binaries = collect_dynamic_libs('numpy')
|
||||||
|
# scipy_binaries = collect_dynamic_libs('scipy') # 如果使用了 scipy
|
||||||
|
pandas_binaries = collect_dynamic_libs('pandas') # 如果使用了 pandas
|
||||||
|
kafka_binaries = collect_dynamic_libs('confluent_kafka')
|
||||||
|
|
||||||
|
# 合并所有动态库列表
|
||||||
|
all_binaries = kafka_binaries
|
||||||
|
|
||||||
|
duipath = os.path.dirname(dataui.__file__)
|
||||||
|
|
||||||
|
block_cipher = None
|
||||||
|
|
||||||
|
a = Analysis(['../src/kgadget.py'],
|
||||||
|
pathex=['../src'],
|
||||||
|
binaries=all_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=True,
|
||||||
|
upx_exclude=[],
|
||||||
|
runtime_tmpdir=None,
|
||||||
|
console=True,
|
||||||
|
disable_windowed_traceback=False,
|
||||||
|
target_arch=None,
|
||||||
|
codesign_identity=None,
|
||||||
|
entitlements_file=None )
|
||||||
Loading…
x
Reference in New Issue
Block a user