我遇到了这个问题,其中这段代码:
import nltk
sentence = "Hello everyone on stackoverflow!"
tokens = nltk.word_tokenize(sentence)
print tokens
从 PowerShell 中运行时抛出此类错误:
Traceback (most recent call last):
File "tokenize.py", line 1, in <module>
import nltk
File "C:\PYTHON27\lib\site-packages\nltk\__init__.py", line 105, in <module>
from collocations import *
File "C:\PYTHON27\lib\site-packages\nltk\collocations.py", line 37, in <module>
from nltk.util import ingrams
File "C:\PYTHON27\lib\site-packages\nltk\util.py", line 12, in <module>
import pydoc
File "C:\PYTHON27\LIB\pydoc.py", line 55, in <module>
import sys, imp, os, re, types, inspect, __builtin__, pkgutil, warnings
File "C:\PYTHON27\LIB\inspect.py", line 39, in <module>
import tokenize
File "C:\stuff\tokenize.py", line 4, in <module>
tokens = nltk.word_tokenize(sentence)
AttributeError: 'module' object has no attribute 'word_tokenize'
但是相同的代码在IDLE中没有问题:
>>> import nltk
>>> sentence = "Hello everyone on stackoverflow!"
>>> tokens = nltk.word_tokenize(sentence)
>>> print tokens
['Hello', 'everyone', 'on', 'stackoverflow', '!']
>>>
无论我做什么,我似乎都无法解决它。一开始以为是目录中的“”空格,所以改成了“stuff”,重新安装了nltk,问题依旧。
非常感谢您的帮助:)
最佳答案
如果我正确地读取了您的堆栈跟踪,则您调用了脚本tokenize.py
。但是 tokenize 已经是标准 Python 库的一个模块了。并且仍然根据堆栈跟踪,从 nltk
间接调用 tokenize
模块。但由于当前目录中有一个 tokenize.py
,Python 会采用它而不是标准的。
您应该将脚本重命名为不与标准 Python 库冲突的名称。
关于python - 脚本适用于 IDLE 但不适用于 PowerShell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24267276/