首页 > 解决方案 > 在 unix 中运行时无法识别 Python 子模块

问题描述

我有一个具有以下结构的 python/pyspark 项目:

project
     __ini__.py
     module1
           __ini__.py
           file1.py
           file_run1.py
     module2
           __ini.py
           file2.py
           file_run2.py
     shared_allmodules
          __ini__.py
          func1.py
          func2.py

文件_run1.py:

from shared_allmodules import func1, func2
from module1 import file1

文件2.py:

from shared_allmodules import func2

我在 CDSW 中有 thia 结构,它在那里工作。但现在我必须将所有文件移动到一个 unix 服务器并从那里运行。

但是当我跑步时

spark2-submit file_run1.py

从 module1 目录我有一个错误,“没有名为 shared_allmodules 的模块”。

我是 python/pyspark 的新手,我不知道我必须做什么才能让我的子模块在 unix 中被识别。

我没有.py,因为我不知道如何使用它。我也没有 if name=main 的条件。

我的 py 文件有很多 pyspark 代码,我只是在这里写了一部分目录结构。

你知道我必须做什么才能在 unix 中运行从其他目录导入模块的 py 文件吗?

标签: pythonunixpyspark

解决方案


您需要指定PYTHONPATH为 python 解释器目录(外部目录)定义可见的环境变量,或者使用[1]site-packages在系统中安装您的模块。setuptools

例子:

export PYTHONPATH=/path/to/project:$PYTHONPATH

推荐阅读