Python 2.7 PyCharm can';找不到';星火之家';从其他文件导入时

Python 2.7 PyCharm can';找不到';星火之家';从其他文件导入时,python-2.7,apache-spark,pyspark,Python 2.7,Apache Spark,Pyspark,我有两个文件 test.py test_test.py 当我运行test.py时,连接成功,但使用test_test.py时,它会给出 升起钥匙错误(钥匙) 键错误:如果未找到或无效的SPARK\u HOME,则会出现“SPARK\u HOME”错误。因此,最好将其添加到bashrc中,然后检查并重新加载代码。因此,将其添加到test.py的顶部 import os import sys import pyspark from pyspark import SparkContext, Spark

我有两个文件

test.py

test_test.py

当我运行test.py时,连接成功,但使用test_test.py时,它会给出


升起钥匙错误(钥匙)

键错误:如果未找到或无效的
SPARK\u HOME,则会出现“SPARK\u HOME”错误。因此,最好将其添加到
bashrc
中,然后检查并重新加载代码。因此,将其添加到
test.py的顶部

import os
import sys
import pyspark
from pyspark import SparkContext, SparkConf, SQLContext

# Create a variable for our root path
SPARK_HOME = os.environ.get('SPARK_HOME',None)
# Add the PySpark/py4j to the Python Path
sys.path.insert(0, os.path.join(SPARK_HOME, "python", "lib"))
sys.path.insert(0, os.path.join(SPARK_HOME, "python"))

pyspark_submit_args = os.environ.get("PYSPARK_SUBMIT_ARGS", "")
if not "pyspark-shell" in pyspark_submit_args: pyspark_submit_args += " pyspark-shell"
os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args
也可以在~/.bashrc文件的末尾添加此项

命令:
vim~/.bashrc
如果您使用的是任何基于Linux的操作系统

# needed for Apache Spark
export SPARK_HOME="/opt/spark"
export IPYTHON="1"
export PYSPARK_PYTHON="/usr/bin/python3"
export PYSPARK_DRIVER_PYTHON="ipython3"
export PYSPARK_DRIVER_PYTHON_OPTS="notebook"
export PYTHONPATH="$SPARK_HOME/python/:$PYTHONPATH"
export PYTHONPATH="$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH"
export PYSPARK_SUBMIT_ARGS="--master local[2] pyspark-shell"
export CLASSPATH="$CLASSPATH:/opt/spark/lib/spark-assembly-1.6.1-hadoop2.6.0.jar
注意:

  • 在上面的bashrc代码中,我将我的SPARK_HOME值指定为
    /opt/SPARK
    ,您可以指定保存SPARK文件夹的位置(从网站下载的文件夹)

  • 另外,我使用的是
    python3
    ,如果您使用的是python2.+版本,那么可以在bashrc中将其更改为
    python

  • 我使用Ipython,以便在运行时进行简单的测试,比如加载一次数据并多次测试代码。如果您使用的是纯文本编辑器,请告诉我我将相应地更新bashrc


  • 为什么会发生这种情况,为什么当我从另一个文件运行时,PyCharm不能获取“SPARK_HOME”?我在vim的PC中测试了你的代码。分别运行两个
    .py
    文件后,代码将打印“全部完成”。因此,问题出在您的
    SPARK\u HOME
    位置。你在你的操作系统中设置了吗。我假设您使用的是Linux操作系统。是的,我使用的是带有PyCharm IDE的ubuntu,但在运行test_test.py文件时,它会引发“SPARK_HOME”的关键错误,这与我运行test.py文件时不同。另外,当test.py文件成功运行时,我在.bashrc中给出了'SPARK_HOME'的路径。您是否在终端中而不是在IDE中单独检查了它?是否得到了任何结果?
    import os
    import sys
    import pyspark
    from pyspark import SparkContext, SparkConf, SQLContext
    
    # Create a variable for our root path
    SPARK_HOME = os.environ.get('SPARK_HOME',None)
    # Add the PySpark/py4j to the Python Path
    sys.path.insert(0, os.path.join(SPARK_HOME, "python", "lib"))
    sys.path.insert(0, os.path.join(SPARK_HOME, "python"))
    
    pyspark_submit_args = os.environ.get("PYSPARK_SUBMIT_ARGS", "")
    if not "pyspark-shell" in pyspark_submit_args: pyspark_submit_args += " pyspark-shell"
    os.environ["PYSPARK_SUBMIT_ARGS"] = pyspark_submit_args
    
    # needed for Apache Spark
    export SPARK_HOME="/opt/spark"
    export IPYTHON="1"
    export PYSPARK_PYTHON="/usr/bin/python3"
    export PYSPARK_DRIVER_PYTHON="ipython3"
    export PYSPARK_DRIVER_PYTHON_OPTS="notebook"
    export PYTHONPATH="$SPARK_HOME/python/:$PYTHONPATH"
    export PYTHONPATH="$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH"
    export PYSPARK_SUBMIT_ARGS="--master local[2] pyspark-shell"
    export CLASSPATH="$CLASSPATH:/opt/spark/lib/spark-assembly-1.6.1-hadoop2.6.0.jar