用于piglatin脚本的Python UDF没有找到re模块

时间:2012-04-19 17:14:23

标签: python regex user-defined-functions apache-pig

我正在使用我正在使用的piglatin脚本创建UDF。我的问题是当我用pig script.pig运行脚本时,我收到以下错误:

[main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1121: Python Error. Traceback (most recent call last):
  File "utils.py", line 3, in <module>
    import re
ImportError: No module named re

在我的“utils.py”脚本中,我正在导入模块:import re

为什么找不到re模块,我该如何解决?

修改 我应该注意,如果我使用python命令直接运行python脚本,我不会收到错误,说它无法找到re模块。

修改2

好的,基于这些评论,我安装了jython(我的系统上没有安装),这里是我脚本print sys.path的输出:

使用python

['/home/hduser/bqmScripts/betsScripts', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/python2.6/dist-packages/gst-0.10', '/usr/lib/pymodules/python2.6', '/usr/lib/python2.6/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.6/gtk-2.0', '/usr/local/lib/python2.6/dist-packages']

使用Jython

['', '/usr/share/jython/Lib', '/usr/lib/site-python', '__classpath__']

使用猪

['/pig/lib/Lib', '__classpath__', '__pyclasspath__/']

看到这个之后,我尝试将jython中缺少的路径元素添加到猪版本中,我现在得到的是:

 File "utils.py", line 8, in <module>
    import re
  File "/usr/share/jython/Lib/re.py", line 7, in <module>
    import sre, sys
  File "/usr/share/jython/Lib/sre.py", line 97, in <module>
    import sre_compile
  File "/usr/share/jython/Lib/sre_compile.py", line 17, in <module>
    assert _sre.MAGIC == MAGIC, "SRE module mismatch"
AssertionError: SRE module mismatch

解决

要解决我的最新错误消息,我查找了我的猪安装使用的jython版本(2.5)并手动安装了该版本。这解决了这个问题。

1 个答案:

答案 0 :(得分:2)

re是stdlib的一部分,因此您的Python安装已损坏或不完整,或某些内容已损坏sys.path的内容。