自编译的pytorch出现OSError: libmkl_intel_lp64.so.1: cannot open shared object file: No such file or direct

我的Pytorch是本机编译安装
运行时出现:

Traceback (most recent call last):
  File "inference.py", line 3, in <module>
    import torch
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/__init__.py", line 198, in <module>
    _load_global_deps()
  File "/opt/conda/envs/py38/lib/python3.8/site-packages/torch/__init__.py", line 151, in _load_global_deps
    ctypes.CDLL(lib_path, mode=ctypes.RTLD_GLOBAL)
  File "/opt/conda/envs/py38/lib/python3.8/ctypes/__init__.py", line 373, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libmkl_intel_lp64.so.1: cannot open shared object file: No such file or directory

我用pip install mkl安装了mkl以后还是出错。
因此查找一下so的位置

find /opt -name libmkl_intel_lp64.so

发现在我的conda内部已经有了, 所以直接链接过去.

!echo $LD_LIBRARY_PATH
!sudo ln -s /usr/local/lib/libmkl_intel_lp64.so /usr/local/lib/libmkl_intel_lp64.so.1
!sudo ln -s /usr/local/lib/libmkl_intel_thread.so /usr/local/lib/libmkl_intel_thread.so.1
!sudo ln -s /usr/local/lib/libmkl_core.so /usr/local/lib/libmkl_core.so.1

!ldconfig
!ldd /usr/local/lib/python3.7/dist-packages/torch/lib/libtorch.so

这个问题常见于使用conda新环境去编译pytorch.

### PyTorch 安装后出现 `OSError` 关于 `libgomp` 共享对象文件缺失的解决方案 当遇到 `OSError: libtorch_cpu.so: cannot open shared object file: No such file or directory` 或者类似的错误提示,通常是因为缺少某些依赖库或者环境配置不正确。以下是可能的原因以及对应的解决方法: #### 可能原因分析 1. **动态链接库未找到** 错误表明系统无法定位到所需的共享对象文件(如 `libtorch_cpu.so`),这可能是由于安装过程中遗漏了一些必要的依赖项[^1]。 2. **环境变量设置不当** 如果系统的 `LD_LIBRARY_PATH` 环境变量没有正确指向包含这些共享库的目录,则可能会引发此类问题。 3. **操作系统兼容性问题** 不同版本的操作系统对特定库的支持程度不同。如果使用的操作系统较旧,可能存在部分库不可用的情况。 --- #### 解决方案 ##### 方法一:重新安装 PyTorch 和其依赖项 确保按照官方文档推荐的方式安装最新版 PyTorch。可以通过以下命令完成: ```bash pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 ``` 上述命令适用于 CUDA 11.8 的 GPU 版本;如果是 CPU-only 环境,请移除 `--index-url` 参数并直接运行 `pip install torch`. 此外,可以尝试通过 Conda 渠道安装以减少潜在冲突风险: ```bash conda install pytorch torchvision torchaudio cpuonly -c pytorch ``` ##### 方法二:手动安装缺失的依赖库 对于 Linux 用户来说,常见的问题是缺少 GNU Compiler Collection (GCC) 提供的一些支持库,比如 `libgomp`。可通过包管理器安装它们: ```bash sudo apt-get update && sudo apt-get install -y libgomp1 ``` 此操作会下载并安装 GCC 所需的核心组件之一——`libgomp1` 库。 ##### 方法三:调整 LD_LIBRARY_PATH 路径 确认已安装的 PyTorch 动态库路径被加入到了全局加载器范围内。执行如下脚本来验证是否存在目标 `.so` 文件及其具体位置: ```python import os, ctypes.util print(ctypes.util.find_library('torch')) ``` 假如返回为空字符串,则说明当前工作区并未识别该模块的位置。此时可临时修改 shell 配置来补充丢失的信息: ```bash export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/pytorch/libs/ ``` 记得替换 `/path/to/pytorch/libs/` 成实际存放相关 .so 文件的真实地址。 ##### 方法四:升级或降级 Python/Pip/CMake 工具链 有时开发工具之间的版本差异也会引起类似异常行为。建议同步更新至稳定状态下的解释器与构建辅助程序组合形式下再试一次整个流程。 --- ### 总结 以上列举了几种常见场景下的处理措施,针对具体情况采取相应策略即可有效缓解乃至彻底消除这类 runtime error 发生概率。务必保持软件栈各组成部分处于良好协作关系之中才能保障项目顺利推进下去。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

canmoumou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值