在python脚本中,如何忽略apachepig的python修饰符进行独立单元测试

ulmd4ohb  于 2021-06-24  发布在  Pig
关注(0)|答案(1)|浏览(318)

我有一个python脚本,它在apachepig下的jython中执行。它用 @schemaFunction 负责。这个 @outputSchemaFunction 装饰工。
我想用一个独立的python主脚本在pig之外的“普通的本地python解释器”下测试这些函数。但是,当我在本地python系统下运行脚本时,解释器会抱怨: "NameError: name 'outputSchema' is not defined" 我知道独立的python显然不支持这些decorator。
如何在本地python解释器中测试脚本?我可以在调用脚本中将装饰器定义为“空”吗?或者是否有类似于忽略装饰器的命令行选项?

qc6wkl3g

qc6wkl3g1#

我用的是Pig0.10.0。
当pig将该模块用作自定义项时,它会设置 __name____lib__ . 正常情况下, __name__ 设置为模块的实际名称(减去.py)。因此,可以为定义一些空的装饰器 outputSchema 以及 outputSchemaFunction 在if块的内部。比如:
我的自定义项.py


# !/usr/bin/python

if __name__ != '__lib__':
    def outputSchema(dont_care):
        def wrapper(func):
            def inner(*args,**kwargs):
                return func(*args,**kwargs)
            return inner
        return wrapper

# Your UDFs go here

你可以自己验证 print __name__ 在山顶 myudfs.py .

相关问题