You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS Big Sur运行PySpark报/usr/libexec/java_home/bin/java不是目录错误

问题根因

报错中的/opt/spark/bin/spark-class: line 71: /usr/libexec/java_home/bin/java: Not a directory说明Spark启动时读取到的JAVA_HOME被错误设置为了/usr/libexec/java_home(Mac上查找Java路径的命令)而非实际JDK安装路径。你在终端验证的JAVA_HOME配置正确,是因为PyCharm默认不会加载终端的shell配置(.zshrc/.bash_profile等),二者的环境变量相互独立。


解决方法1:代码内显式指定环境变量(优先级最高,生效最快)

直接在你现有代码的os.environ["SPARK_HOME"]行下方新增JAVA_HOME的指定,修改后代码开头如下:

import os
    
os.environ["SPARK_HOME"] = "/opt/spark"
os.environ["JAVA_HOME"] = "/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home"

from pyspark.sql import SparkSession

修改后直接运行即可。

解决方法2:修改PyCharm运行配置

如果不想修改代码,可单独调整当前脚本的运行环境变量:

  • 点击PyCharm右上角运行按钮旁的下拉框,选择Edit Configurations
  • 在左侧选中你运行的LOL.py配置项
  • 找到Environment variables项,点击右侧的编辑按钮
  • 新增一条环境变量,键为JAVA_HOME,值为/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
  • 保存配置后重新运行脚本即可。

验证方法

你可以在代码最开头添加一行打印逻辑,确认PyCharm实际读取的JAVA_HOME是否正确:

import os
print("当前读取的JAVA_HOME为:", os.environ.get("JAVA_HOME"))

如果输出不是你预期的JDK路径,按上述两种方法调整即可。

额外说明:你本地同时安装的Java 11不会影响运行,只要指定的JAVA_HOME指向Java 8路径即可适配PySpark 2.4.0的版本要求。

内容的提问来源于stack exchange,提问作者jd2050

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 09:24:05