如何在SageMaker Notebook中配置JAVA_HOME使其识别已安装的Java环境
SageMaker Notebook 内核无法识别已安装Java的解决方案
报错的根本原因是SageMaker Notebook的Jupyter内核运行环境与终端shell环境相互隔离,终端下生效的PATH环境变量没有同步到Python进程的运行环境中,导致tabula无法调用java命令。
步骤1:确认Java的实际安装路径
在SageMaker终端执行以下命令,获取java可执行文件的完整路径:which java
返回示例:/usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java,截取到bin层级的路径即/usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin备用。
解决方案1:临时生效(仅当前Notebook内核运行周期有效)
在Notebook代码的最开头添加环境变量配置代码,将Java的bin目录加入PATH:
import os # 将下方路径替换为你自己实际查到的Java bin目录路径 java_bin_path = "/usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin" os.environ["PATH"] = f"{java_bin_path}:{os.environ['PATH']}" # 再执行tabula相关代码即可 import tabula tabula.environment_info()
解决方案2:永久生效(所有Notebook内核自动加载)
在终端执行以下命令,在IPython启动脚本中添加环境变量配置,后续启动的所有内核都会自动加载该配置:
cat > ~/.ipython/profile_default/startup/00-set-java-path.py << EOF import os # 替换为实际的Java bin目录路径 java_bin_path = "/usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin" os.environ["PATH"] = f"{java_bin_path}:{os.environ['PATH']}" EOF
执行完成后重启Notebook内核即可生效。
附加说明
你安装的是Java 1.8但终端返回的版本号为1.7,是因为系统默认的Java版本优先级设置问题,如需切换默认Java版本,可在终端执行:sudo alternatives --config java
按照提示选择Java 1.8对应的序号即可。
内容的提问来源于stack exchange,提问作者Matthew Metros
相关产品推荐
相关产品推荐

