原帖 Linux 环境的 torch/lib 中只看到 libcaffe2_gpu.so 和 libshm.so,明确找不到 libtorch_python.so:
ImportError: libtorch_python.so: cannot open shared object file: No such file or directory
缺库文件与找不到库路径要先区分
原题明确列出的 torch/lib 文件清单没有 libtorch_python.so。与“文件实际存在、LD_LIBRARY_PATH 未覆盖”相比,这题优先验证安装完整性;环境变量不可能生成缺失文件。也不能把另一版本的同名库复制进来凑齐名称。
如果所需库根本不存在,修改 LD_LIBRARY_PATH 不会把它变出来。先确认文件清单属于当前解释器的 torch 安装,而不是另一套环境。
import sys
import importlib.util
from pathlib import Path
print("josh050608")
print("python:", sys.executable, sys.version)
spec = importlib.util.find_spec("torch")
print("torch spec:", spec)
if spec and spec.submodule_search_locations:
for location in spec.submodule_search_locations:
lib = Path(location) / "lib"
print("lib directory:", lib)
print("libtorch_python:", list(lib.glob("libtorch_python*")))
在同一终端运行 python -m pip show -f torch,核对包版本与安装文件清单。原帖是很旧的 torch 1.0.1.post2/Python 3.7.1,不能从另一版本拷一个同名 .so 混入使用。
如果确认安装不完整,先保留环境清单,在独立环境用官方历史页对应的匹配包验证。fastai 也可能有 torch 版本约束,不能只升级一项而不核对项目依赖。
如果实际文件存在,则对这个受信安装库运行 ldd /实际路径/libtorch_python.so,检查是否是它依赖的其他库缺失;此时再调查搜索路径和 ABI。不要在没有文件的情况下反复导入 torch._C,或只因系统 nvcc 是 7.5 就推定唯一根因。
最后先独立 import torch 并做 CPU 张量运算,再导入 fastai,最后验证所需 CUDA 路径。这样能把基础包修复与上层框架问题分开定位。
不导入 torch,先把包定位与文件存在性记录下来
下面用标准库确认当前解释器找到的 torch 包位置,不执行底层扩展。若是命名空间目录或项目遮挡,先处理导入来源:
import importlib.util
from pathlib import Path
spec = importlib.util.find_spec("torch")
print("origin:", None if spec is None else spec.origin)
locations = [] if spec is None else list(spec.submodule_search_locations or [])
for location in locations:
library = Path(location) / "lib" / "libtorch_python.so"
print("expected library:", library)
print("exists:", library.is_file())
若当前安装记录宣称包含此文件,磁盘却缺失,检查包来源、安装是否中断及是否混用了不同环境路径。先保存依赖清单,在独立环境验证官方历史匹配构建,再迁移 fastai 项目。
| 文件检查 | 下一步 |
|---|---|
| 主库不存在 | 修复完整分发或源码构建,不先改搜索路径 |
| 主库存在、依赖缺失 | 对可信安装运行 ldd,定位依赖来源与 ABI |
| 指向另一套环境 | 统一解释器与安装目标 |
| torch 独立成功、fastai 失败 | 转查上层兼容性,保留新的完整堆栈 |
原题 torch 1.0.1.post2 与 fastai 属于历史组合,不能直接升级某一项就假定项目兼容。系统 CUDA 7.5 是另一条环境线索,不足以覆盖文件缺失的直接证据。
验收依次独立导入 torch、CPU 运算、导入 fastai,再验证项目需要的 CUDA 路径。避免在基础扩展都未加载时反复重跑语言模型训练。
参考:原始求助帖;技术依据:PyTorch 官方安装指南、PyTorch 历史安装组合、pip 官方用法、Python 导入机制。