如何导入其他python模块和包

问题描述

我有以下项目结构,

work_directory:
    merge.py
    a_package

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

我在merge.py 中使用MRJob 编写了一个MapReduce 作业,我需要在其中导入a_package,例如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

我该怎么办?

解决方法

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

work_directory:
  __init__.py
  merge.py
  a_package