2015-05-19 80 views
5

我正在使用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

回答

4

我們確定這是由與nltk.tokenize和用戶的tokenize.py的名稱空間衝突引起的。重命名tokenize.py後,一切正常。

相關問題