直接运行时的wikipedia属性错误
这是关于Python的维基百科模块(通过pip安装)的内容。
当我使用ipython并执行以下操作时:
import wikipedia
print wikipedia.summary("Wikipedia")
一切都运行得很好。但是当我把相同的代码保存到一个文件里,并通过命令行运行时:
python filename.py
它显示了AttributeError: 'module' object has no attribute 'summary'的错误。
为什么会出现这种情况呢?
补充说明:后来我在'filename.py'文件中加入了以下内容,以列出这个模块的范围:
print dir(wikipedia)
..这给出了:
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'wikipedia']
而在ipython中,使用dir(wikipedia)可以按预期显示所有名称:
['API_URL', ..(snip) .. 'PageError', 'RATE_LIMIT', .. (snip) .. '__name__', 'time', 'timedelta']
这是为什么呢?
1 个回答
5
十有八九你把自己的脚本命名为 wikipedia.py
。
这行 import wikipedia
其实是导入了你自己写的脚本,而不是你从PyPI安装的那个包。你可以通过 dir()
的输出看到,导入的模块在命名空间里也叫 wikipedia
; 这就是自我引用。
你可以用下面的方式确认这一点,或者找出还有哪个模块遮盖了你的导入:
import wikipedia
print wikipedia.__file__
把那个文件重命名,这样就不会遮盖掉库了。