Python,ImportError:无法导入名称AbstractLazySequence

问题描述:

我正在使用nltk,但我面临的问题似乎并没有与nltk具体相关。 我有一个模块名为util.tokenize里面其中有一些类和我有以下的第一行:Python,ImportError:无法导入名称AbstractLazySequence

UTIL/tokenizer.py

from nltk.tokenize.regexp import RegexpTokenizer 
... 

class SentTokenizer(object): 
    def __init__(self, stem=False, pattern='[^\w\-\']+'): 
     self.alg = RegexpTokenizer(pattern, gaps=True) 

    def __call__(self, text): 
     return self.alg.tokenize(text) 
    .... 

if __name__ == '__main__': 
    s_t = SentTokenizer() 
    s_t('blah blah') 

当我从另一个调用模块的课程,说test.py一切似乎工作,但运行tokenize.py模块直接导致ImportError。

File "tokenize.py", line 1, in <module> 
...  
File "Python27\lib\site-packages\nltk\corpus\reader\util.py", line 28, in <module> 
     from nltk.util import AbstractLazySequence, LazySubsequence, LazyConcatenation, py25 
    ImportError: cannot import name AbstractLazySequence 

可能是什么问题?为什么它从其他模块调用时起作用?

test.py

from util.tokenize import SentTokenizer 
s_t = SentTokenizer() 
print s_t('blah blah') 

平台是Windows。

+0

添加了更多相关代码的部分 – CentAu

+0

它甚至没有得到__main__代码。在第一行它会抛出错误。 我增加了更多的代码。 @grill – CentAu

+1

如果仅使用上面包含的代码(不包括省略号)创建一个新的.py文件,会发生什么情况? – grill

我们确定这是由与nltk.tokenize和用户的tokenize.py的名称空间冲突引起的。重命名tokenize.py后,一切正常。