arc*_*ife 1 python pip wikipedia-api python-2.7
对于python的wikipedia模块(通过pip安装)
当我使用ipython并执行以下操作时:
import wikipedia
print wikipedia.summary("Wikipedia")
Run Code Online (Sandbox Code Playgroud)
..工作正常.但是当我在文件中保存它并从shell运行它时:
python filename.py
Run Code Online (Sandbox Code Playgroud)
它显示了AttributeError:'module'对象没有属性'summary'
为什么会这样?
PS:我后来在'filename.py'中包含以下内容,列出了这个模块的范围:
print dir(wikipedia)
Run Code Online (Sandbox Code Playgroud)
..这给了:
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'wikipedia']
Run Code Online (Sandbox Code Playgroud)
而在ipython中,dir(维基百科)按预期提供所有名称:
['API_URL', ..(snip) .. 'PageError', 'RATE_LIMIT', .. (snip) .. '__name__', 'time', 'timedelta']
Run Code Online (Sandbox Code Playgroud)
为什么这样?
10到1你命名自己的脚本wikipedia.py.
import wikipedia然后该行导入脚本本身,而不是从PyPI安装的包.您可以在dir()输出中看到这一点,导入的模块wikipedia在命名空间中具有名称; 自我引用.
您可以确认这一点,或者找到其他模块屏蔽您的导入,包括:
import wikipedia
print wikipedia.__file__
Run Code Online (Sandbox Code Playgroud)
重命名该文件以阻止它屏蔽库.