Python,ImportError:无法导入名称AbstractLazySequence

时间:2015-05-19 17:01:21

标签: python nltk importerror

我正在使用nltk,但我遇到的问题似乎与nltk无关。 我有一个名为util.tokenize的模块,其中有一些类,我有以下第一行:

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。

1 个答案:

答案 0 :(得分:4)

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