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'
>>> 

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

4

4 回答 4

2

可能是您在某处有一个名为“re.py”的自己的文件吗?

re 模块re.match默认具有,这绝不会丢失。

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

于 2013-06-22T15:31:58.817 回答
1

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

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

于 2014-02-07T04:50:43.753 回答
-1

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

于 2015-11-28T09:42:00.523 回答
-1

将您的 python 从 2.6 升级到 2.7 或更高版本,然后重试

于 2017-08-24T11:51:46.620 回答