首页 > 解决方案 > 如何导入其他python模块和包

问题描述

我有以下项目结构,

work_directory:
    merge.py
    a_package

(即“work_directory”目录下的一个python文件merge.py和一个目录)a_package

a_package我在 merge.py 中使用 MRJob 编写了一个 MapReduce 作业,我需要在其中导入from a_package import something. 但是我很难上传a_package到hadoop。

我试过这个方法(https://mrjob.readthedocs.io/en/latest/guides/writing-mrjobs.html#using-other-python-modules-and-packages):我写

class MRPackageUsingJob(MRJob):
    DIRS = ['a_package']

并从映射器内部导入代码

def mapper(self, key, value):
    from a_package import something

我也试过这个:https ://mrjob.readthedocs.io/en/latest/guides/setup-cookbook.html#uploading-your-source-tree

但它们都不起作用,它一直显示ImportError: No module named a_package

我应该怎么办?

标签: pythonhadoopmapreducehadoop2mrjob

解决方案


您只需在文件夹中创建空文件“__init__.py”,就像一个包一样使用它。例如:

work_directory:
  __init__.py
  merge.py
  a_package

推荐阅读