3

使用しているピグラチン スクリプトの 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。スクリプトの出力は次のとおりです。

パイソンの使用

['/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 から pig バージョンに追加しようとしましたが、今得られるのは次のとおりです。

 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

解決した

私の最新のエラーメッセージを解決するために、私の豚のインストールが使用していたjthonのバージョン(2.5)を探し、それを手動でインストールしました。これで問題は解決しました。

4

1 に答える 1

2

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

于 2012-04-19T17:16:36.300 に答える