SageMaker Jupyter实例导入librosa提示找不到sndfile库如何解决
SageMaker 环境下 librosa 报 sndfile library not found 修复方案
你之前执行conda install -c conda-forge libsndfile没生效,核心原因是SageMaker的终端默认激活base环境,和Jupyter笔记本实际运行代码的conda环境不匹配,安装的依赖没有落到当前内核的搜索路径里,按下面步骤操作即可修复:
- 第一步:确认当前内核的环境路径
在你运行import代码的笔记本中新建单元格,执行以下代码拿到当前内核的实际路径:
通常SageMaker默认笔记本内核对应的环境路径是import sys print(sys.executable) print(sys.prefix)/home/ec2-user/anaconda3/envs/python3/,和终端默认的base环境完全隔离。 - 第二步:在笔记本内直接安装依赖,避免环境错配
不要切到终端执行安装命令,直接在当前笔记本的单元格里跑以下命令,强制把依赖装到当前内核路径下:!conda install -c conda-forge libsndfile -y --prefix {sys.prefix} !pip install --force-reinstall soundfile librosa - 第三步:重启内核验证
安装完成后,在Jupyter菜单栏选择Kernel -> Restart Kernel,重启完成后再执行导入命令:
绝大多数场景下这一步就能正常导入。import librosa - 极端场景兜底方案
如果重启后还是报相同错误,是系统动态库链接配置没扫到libsndfile的路径,在单元格执行以下命令更新链接配置即可:
执行完再次重启内核就可以正常使用。!echo "/home/ec2-user/anaconda3/envs/python3/lib" | sudo tee /etc/ld.so.conf.d/libsndfile.conf !sudo ldconfig
注意:所有安装操作完成后必须重启内核,Jupyter不会自动加载新安装的动态链接库,不重启的话哪怕依赖装对了也会持续报错。
内容的提问来源于stack exchange,提问作者Radar Usecase
相关产品推荐
相关产品推荐

