Amazon SageMaker Lab无sudo权限缺失libXrender.so.1问题咨询
Amazon SageMaker Lab 无sudo权限修复libXrender依赖缺失问题
问题触发场景
运行RDKit分子绘图相关代码时抛出导入错误:
from rdkit.Chem.Draw import rdMolDraw2D from rdkit.Chem.Draw.rdMolDraw2D import * ImportError: libXrender.so.1: cannot open shared object file: No such file or directory
环境默认移除sudo权限,无法直接执行apt-get install libxrender1完成系统级安装。
无需联系官方支持的自行修复方案
两种方案都在普通用户权限下可完成,操作耗时不超过5分钟:
方案1:Conda快速安装(优先推荐)
SageMaker Lab默认预装Conda环境,Conda安装的依赖存放在用户目录,不需要系统权限:
- 打开SageMaker Lab内置终端,执行命令:
conda install -c conda-forge libxrender -y - 安装完成后重启当前Notebook的Kernel,重新运行代码即可正常导入RDKit绘图模块。
方案2:手动下载deb包配置本地依赖(Conda源访问慢时使用)
如果Conda下载速度慢,可以直接拉取系统对应deb包解压到用户目录,手动配置共享库加载路径:
- 打开终端,执行命令下载libxrender1安装包:
apt download libxrender1 - 创建本地库存放目录,解压deb包到该目录:
mkdir -p ~/.local/lib dpkg -x libxrender1*.deb ~/.local/lib/ - 配置共享库加载路径:
- 终端使用场景:执行以下命令将路径写入bash启动配置,后续终端启动自动加载:
echo 'export LD_LIBRARY_PATH=~/.local/lib/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH' >> ~/.bashrc source ~/.bashrc - Notebook使用场景:在Notebook最开头添加以下代码,运行时自动加载依赖路径:
import os lib_path = os.path.expanduser("~/.local/lib/usr/lib/x86_64-linux-gnu") os.environ["LD_LIBRARY_PATH"] = f"{lib_path}:{os.environ.get('LD_LIBRARY_PATH', '')}"
- 终端使用场景:执行以下命令将路径写入bash启动配置,后续终端启动自动加载:
- 重新运行导入代码即可正常使用。
注意事项
- 手动解压deb包时如果后续提示还缺其他X11相关依赖,按照同样的
apt download 包名+解压的方式补充即可,所有SageMaker Lab默认镜像缺失的X11相关轻量依赖总大小不超过5MB,不会占用过多存储。 - 不需要联系官方团队修改预装容器镜像,上述方案配置完成后只要不重置用户环境,后续使用会一直生效。
内容的提问来源于stack exchange,提问作者Bill Tatsis
相关产品推荐
相关产品推荐

