Docker容器安装torchaudio后导入报错:找不到libtorch_cuda_cpp.so文件
问题描述
在EC2实例上直接执行pip3 install torchaudio可正常安装并使用torchaudio(版本2.2.1+cu121),但通过Dockerfile安装时出现报错。
Dockerfile相关命令:
RUN pip3 install --target=/opt/prod/lib/python3.8/site-packages torchaudio
进入容器后导入torchaudio报错信息:
>>> import torchaudio /opt/prod/lib/python3.8/site-packages/torchaudio/_internal/module_utils.py:99: UserWarning: Failed to import soundfile. 'soundfile' backend is not available. warnings.warn("Failed to import soundfile. 'soundfile' backend is not available.") Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/opt/prod/lib/python3.8/site-packages/torchaudio/__init__.py", line 1, in <module> from torchaudio import ( # noqa: F401 File "/opt/prod/lib/python3.8/site-packages/torchaudio/_extension.py", line 135, in <module> _init_extension() File "/opt/prod/lib/python3.8/site-packages/torchaudio/_extension.py", line 105, in _init_extension _load_lib("libtorchaudio") File "/opt/prod/lib/python3.8/site-packages/torchaudio/_extension.py", line 52, in _load_lib torch.ops.load_library(path) File "/opt/prod/lib/python3.8/site-packages/torch/_ops.py", line 852, in load_library ctypes.CDLL(path) File "/opt/prod/python3.8/lib/python3.8/ctypes/__init__.py", line 373, in __init__ self._handle = _dlopen(self._name, mode) OSError: libtorch_cuda_cpp.so: cannot open shared object file: No such file or directory
解决方案
1. 消除soundfile缺失警告
在Dockerfile中补充安装soundfile依赖,可与torchaudio一起安装:
RUN pip3 install --target=/opt/prod/lib/python3.8/site-packages torchaudio soundfile
2. 解决libtorch_cuda_cpp.so缺失问题
该错误核心是指定--target路径安装时,CUDA相关动态库路径未被正确识别,或基础镜像缺少CUDA运行时环境,可通过以下两种方案解决:
方案一:使用PyTorch官方基础镜像
PyTorch官方镜像已预装好匹配版本的CUDA环境、torch及torchaudio依赖,避免路径适配问题:
# 选择对应CUDA12.1、Python3.8的PyTorch运行时镜像 FROM pytorch/pytorch:2.2.1-cuda12.1-cudnn8-runtime # 安装torchaudio及soundfile到指定路径 RUN pip3 install --target=/opt/prod/lib/python3.8/site-packages torchaudio soundfile
方案二:自定义基础镜像补全环境
若需使用自定义基础镜像,需确保镜像包含CUDA运行时,并安装匹配版本的torch和torchaudio:
# 基于带CUDA12.1运行时的Ubuntu镜像 FROM nvidia/cuda:12.1.1-runtime-ubuntu20.04 # 安装Python3.8及pip RUN apt-get update && apt-get install -y python3.8 python3-pip && ln -s /usr/bin/python3.8 /usr/bin/python3 # 安装对应CUDA版本的torch和torchaudio,指定PyTorch官方源 RUN pip3 install --target=/opt/prod/lib/python3.8/site-packages torch==2.2.1+cu121 torchaudio==2.2.1+cu121 soundfile -f https://download.pytorch.org/whl/cu121 # 添加自定义路径到Python环境变量,确保能找到安装的库 ENV PYTHONPATH="/opt/prod/lib/python3.8/site-packages:$PYTHONPATH"
3. 验证安装
启动容器后执行以下命令验证:
import torchaudio print(torchaudio.__version__) # 正常输出应为'2.2.1+cu121'且无报错
内容的提问来源于stack exchange,提问作者Fisher Coder
相关产品推荐
相关产品推荐

