2012-04-19 11 views
3

私が使用しているブタスクリプトのUDFを作成できません。私の問題は、私はpig script.pigでスクリプトを実行すると、私は次のエラーを取得することです:ブタスクリプトのPython UDFで再モジュールが見つかりません

[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モジュールを見つけることができなかったというエラーを取得しないことに注意すべきです。 [OK]を

編集2

は、コメントに基づいて、私は(私のシステムにインストールされていなかった)Jythonのをインストールし、ここで私のスクリプトのprint sys.pathの出力は、次のとおりです。

のpythonを使用してJythonの

使用

['/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'] 

これを見た後に豚

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

を使用

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

は、私は豚のバージョンへの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 

解答

最新のエラーm私は豚のインストールで使用していたバージョンのjythonを探して(2.5)、手動でインストールしました。それが問題を解決しました。

答えて

2

reはstdlibの一部ですので、Pythonのインストールが壊れているか不完全であるか、または何かがsys.pathの内容を破損しています。

+0

「sys.pathの内容が壊れています」という意味は分かりませんが、スクリプトを 'python'コマンドを使って手動で実行すると、エラーメッセージが表示されません。 – Deleteman

+0

あなたのスクリプトに 'sys.path'を表示させ、' python'を使うときと 'pig'を使う時の出力を比較してください。 – deStrangis

+0

'Pig'はCPythonではなくUythonを実行するためにJythonを使用しています。その理由は、CPythonは1つではなく他のプラットフォームでは動作しません。 –