直接运行时的wikipedia属性错误

1 投票
1 回答
1233 浏览
提问于 2025-04-17 20:59

这是关于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__

把那个文件重命名,这样就不会遮盖掉库了。

撰写回答