【问题标题】:Pyspark - ImportError: No module namedPyspark - ImportError:没有命名的模块
【发布时间】:2020-09-22 07:59:34
【问题描述】:

我正在做一个 pyspark 项目,下面是我的项目目录结构。

project_dir/
src/
    etl/
       __init__.py
       etl_1.py
       spark.py
    config/
       __init__.py
    utils/
       __init__.py
test/
    test_etl_1.py
setup.py
README.md
requirements.txt

当我在单元测试代码下面运行时,我得到了

python test_etl_1.py

Traceback (most recent call last):
  File "test_etl_1.py", line 1, in <module>
    from src.etl.spark import get_spark
ImportError: No module named src.etl.spark

这是我的单元测试文件:

from src.etl.spark import get_spark
from src.etl.addcol import with_status

class TestAppendCol(object):

  def test_with_status(self):

    source_data = [
        ("p", "w", "pw@sample.com"),
        ("j", "b", "jb@sample.com")
    ]
    source_df = get_spark().createDataFrame(
        source_data,
        ["first_name", "last_name", "email"]
    )

    actual_df = with_status(source_df)

    expected_data = [
        ("p", "w", "pw@sample.com", "added"),
        ("j", "b", "jb@sample.com", "added")
    ]
    expected_df = get_spark().createDataFrame(
        expected_data,
        ["first_name", "last_name", "email", "status"]
    )

    assert(expected_df.collect() == actual_df.collect())

我需要将此文件作为 pytest 运行,但由于模块错误,它无法正常工作。你能帮我解决这个错误吗?

【问题讨论】:

标签: python apache-spark pyspark pytest


【解决方案1】:

您的 PYTHONPATH 取决于您的导航位置。鉴于你说你运行python test_etl_1.py,你必须在~/project_dir/test/。所以找不到src

如果您从~/project_dir/ 运行python -m unittest,它应该可以工作。如果没有,您可以随时尝试修复/改进软件包的安装,如 here 所示。

【讨论】:

    【解决方案2】:

    您的源代码在 src 中,模块是 etl、config 和 util。所以像下面这样更新导入。

    from etl.spark import get_spark
    from etl.addcol import with_status
    

    确保 PYTHONPATH 指向 project_dir/src 目录

    【讨论】:

    • 嗨 Ranga,我尝试了您的解决方案.. 我遇到错误 Traceback (最近一次调用最后一次): File "test-etl_1.py", line 1, in from etl.spark import get_spark ImportError: No module named etl.spark
    • 我正在运行 python test_etl_1.py
    猜你喜欢
    • 1970-01-01
    • 2017-06-13
    • 2019-12-12
    • 2011-11-27
    • 2013-01-23
    • 2020-08-13
    • 1970-01-01
    相关资源
    最近更新 更多