fix(runtime): preload torch核心库(libc10.so等)后再加载ixformer

_ixformer_torch.so依赖libc10.so,后者在torch/lib/里。
之前直接ctypes.CDLL加载_ixformer_torch.so时找不到libc10.so。
新增Phase 0:先RTLD_GLOBAL加载torch的libc10/libtorch/libtorch_cuda,
再加载ixformer,这样ixformer::infer::*符号才能正确解析。
This commit is contained in:
Claude
2026-08-11 17:10:53 +00:00
parent 9f2d6fd2d2
commit 014a51e9fa

View File

@@ -37,6 +37,21 @@ def _load_bridge():
try:
import ctypes, glob as _glob
# Phase 0: Load torch core libs first — ixformer depends on libc10.so etc.
try:
import torch as _torch
_torch_lib = os.path.join(os.path.dirname(_torch.__file__), "lib")
for _name in ["libc10.so", "libtorch_cpu.so", "libtorch.so",
"libc10_cuda.so", "libtorch_cuda.so", "libtorch_python.so"]:
_p = os.path.join(_torch_lib, _name)
if os.path.isfile(_p):
try:
ctypes.CDLL(_p, mode=ctypes.RTLD_GLOBAL)
except Exception:
pass
except ImportError:
pass
for _base in ["/usr/local/corex/lib64/python3/dist-packages/ixformer",
"/usr/local/corex/lib/python3/dist-packages/ixformer",
"/usr/local/corex/lib64"]: