Python导入nltk出错

3

在终端中导入nltk时,我遇到了以下错误

[greenz@localhost 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'
>>> 

有什么解决这个问题的想法吗?

看起来pickle模块出了问题。尝试重新安装Python,或者更好的方法是升级到2.7版本。 - J0HN
4个回答

2

你是否有一个名为“re.py”的文件?

re模块默认具有re.match功能,不可能缺失。

你可以通过import reprint(re.__file__)来查找。


1
这个问题看起来像是循环依赖。请看 归因错误 的解答。nltk 依赖 re 模块,但由于某种原因,re 模块在完全加载之前需要先引入 nltk。而实际上,re 模块并不依赖 nltk。我认为这是由于错误的 re 模块出现在了 Python 库路径中。请尝试在新终端中直接导入 re 并查看它从哪里加载。你可能需要将其删除,并在默认位置安装正确的 re 模块。

-1

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


-1

将您的Python版本从2.6升级到2.7或更高版本,然后再尝试一次。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接