2013-06-21 50 views
2

,同时通过终端输入NLTK我有这样的Python的进口NLTK错误

[[email protected] hadoop]$ python 
Python 2.6.6 (r266:84292, Feb 21 2013, 23:54:59) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import nltk 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.6/site-packages/nltk/__init__.py", line 73, in <module> 
    from internals import config_java 
    File "/usr/lib/python2.6/site-packages/nltk/internals.py", line 10, in <module> 
    import subprocess 
    File "/usr/lib/python2.6/subprocess.py", line 425, in <module> 
    import pickle 
    File "/usr/lib/python2.6/pickle.py", line 165, in <module> 
    __all__.extend([x for x in dir() if re.match("[A-Z][A-Z0-9_]+$",x)]) 
AttributeError: 'module' object has no attribute 'match' 
>>> 

任何想法的错误来解决这个问题?

+0

看起来咸菜模块坏了。尝试重新安装python,甚至更好,升级到2.7 – J0HN

回答

2

难道是你有一个叫're.py'的文件吗?

默认情况下,re模块有re.match,没有办法认为这是缺失。

您可以通过import reprint(re.__file__)

+0

+1拉我的头发! – Timmah

0

这个问题看起来像循环依赖的发现了这一点。 看看这个答案attribution error。 nltk依赖re模块,由于某种原因,re说它需要在完全加载之前导入nltk。 re没有nltk依赖性。我认为这是因为在Python库路径中出现了一些错误的重新模块。

尝试直接在新终端中导入re,并查看它从哪里加载。您可能已将其删除并在默认位置安装正确的重新模块。

0

嗨,我刚刚通过从我的代码所在的目录中删除.pyc文件来解决此问题。

0

将您的python从2.6升级到2.7或更高,然后再试一次