PyCharm找不到spark-submit:unittest运行报错路径含多余./求助
Fixing FileNotFoundError with Extra
./ in Spark Submit Path When Running Unittest in PyCharm 我之前也碰到过一模一样的路径解析问题,这种多余的./十有八九是环境变量配置里的拼接错误搞出来的,尤其是你提到的同事帮忙配置的.bash_profile,大概率是这里面的路径写法出了问题。
问题根源分析
正常来说,./表示当前目录,但在绝对路径里加上它完全是多余的,而且会导致系统解析路径时出错。你的情况应该是.bash_profile里和Spark相关的环境变量(比如SPARK_HOME或者直接定义的SPARK_SUBMIT路径)被写成了类似myfolder/opt/spark/./bin/spark-submit的格式——可能是配置时不小心把相对路径的写法混进了绝对路径里,或者拼接目录时多打了./。当PyCharm启动时会读取系统的环境变量,这个错误的路径就被传递给了你的unittest测试代码,自然找不到实际存在的正确路径myfolder/opt/spark/bin/spark-submit。
解决步骤
- 先打开你的
.bash_profile文件(一般在用户根目录下,终端执行open ~/.bash_profile就能用默认编辑器打开),搜索所有和Spark相关的配置项,比如SPARK_HOME、SPARK_SUBMIT或者包含spark/bin的路径设置。 - 找到带有多余
./的配置行,比如如果看到export SPARK_SUBMIT=$SPARK_HOME/./bin/spark-submit或者SPARK_HOME=/myfolder/opt/spark/./,直接把里面的./删掉,改成export SPARK_SUBMIT=$SPARK_HOME/bin/spark-submit和SPARK_HOME=/myfolder/opt/spark。 - 保存修改后的
.bash_profile,然后在终端执行source ~/.bash_profile让新配置立即生效。如果怕终端的环境变量没同步到PyCharm,最好重启一下PyCharm,确保IDE加载了更新后的环境变量。 - 额外检查:如果你的测试代码里是直接硬编码了spark-submit的路径,也要确认代码里有没有写错,把多余的
./去掉。另外,PyCharm的运行配置里如果单独设置了环境变量,也要检查那里的路径是否正确——有时候IDE的自定义环境变量会覆盖系统的配置。
内容的提问来源于stack exchange,提问作者morrime
相关产品推荐
相关产品推荐

