在ProQuest TDM Studio的AWS SageMaker中安装enchant C库导入报错如何解决
问题排查与解决步骤
第一步:确认enchant C库实际安装状态
你通过os.popen执行yum install时仅捕获到安装前的依赖解析输出,未确认最终安装结果:os.popen为非阻塞调用,且你遇到的yum源403报错大概率会导致包下载中断,实际未完成安装。
- 执行命令校验安装结果:
rpm -qa | grep enchant- 若无返回结果,说明C库未安装成功,走第二步修复yum源
- 若返回
enchant-1.6.0-5.2.amzn1.x86_64相关内容,说明C库已安装,走第三步排查
第二步:修复yum源403问题后重新安装
你使用的AWS SageMaker旧实例基于停止服务的Amazon Linux 1版本,官方源已经下线,因此请求repo.us-east-1.amazonaws.com返回403,需要先替换为归档源:
- 执行命令替换yum源配置:
sudo sed -i 's/repo.us-east-1.amazonaws.com\/latest\/main\/mirror.list/archive.amazonaws.com\/amazon\/2018.03\/mirror.list/g' /etc/yum.repos.d/amzn-main.repo sudo sed -i 's/repo.us-east-1.amazonaws.com\/latest\/main\/mirror.list/archive.amazonaws.com\/amazon\/2018.03\/mirror.list/g' /etc/yum.repos.d/amzn-updates.repo
- 刷新yum缓存:
sudo yum clean all && sudo yum makecache - 重新执行安装命令:
sudo yum install enchant -y - 安装完成后再次执行第一步的
rpm命令确认安装状态
第三步:C库已安装仍报错的修复方案
如果确认C库已经安装,import enchant仍报错是因为pyenchant无法定位系统C库路径,或版本不兼容:
- 先查找C库文件路径:
find /usr -name "libenchant.so*",正常会返回/usr/lib64/libenchant.so.1类的路径 - 在导入pyenchant前添加环境变量指定搜索路径:
import os # 方案1:添加动态库搜索路径 os.environ['LD_LIBRARY_PATH'] = '/usr/lib64:' + os.environ.get('LD_LIBRARY_PATH', '') # 方案2:直接指定enchant库文件路径,路径替换为你上一步查到的实际路径 os.environ['PYENCHANT_LIBRARY_PATH'] = '/usr/lib64/libenchant.so.1' import enchant
- 若仍报错,检查pyenchant版本兼容性:你安装的enchant C库为1.6版本,仅适配pyenchant 3.0以下版本,可执行命令降级:
pip install pyenchant==2.0.0
内容的提问来源于stack exchange,提问作者AYRTON ROMARIO DEXTRE RAMIREZ
相关产品推荐
相关产品推荐

