问题描述
我有以下项目结构,
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