我正在使用Python2.7。当我输入help()并输入“modules”时,我收到消息
>>> help()
Welcome to Python 2.7! This is the online help utility.
...
help> modules
Please wait a moment while I gather a list of all available modules...
然后我收到一系列警告
Warning: cannot register existing type 'GtkWidget'
...
Warning: cannot add class private field to invalid type '<invalid>'
...
然后整个事情挂起......我必须开始第二个远程会话来发送SIGKILL。
显然有些事情是错的,但我最惊讶的是它在网上收集信息的位置。Python的帮助文档是否可以存储在本地?如何阻止它进入网络?我需要定期帮助,不是在线帮助。
答案 0 :(得分:5)
help()
命令不在互联网上搜索; “在线”只是意味着您可以以交互方式使用它,在它称之为“内置帮助系统”的文档中,它不那么模糊。它的作用是遍历所有PYTHONPATH
并尝试导入每个模块,以便查看系统中可用的模块。
以下是用于获取模块列表的源代码(您可以在python源代码中的Lib/pydoc.py
下找到):
def listmodules(self, key=''):
if key:
self.output.write('''
Here is a list of matching modules. Enter any module name to get more help.
''')
apropos(key)
else:
self.output.write('''
Please wait a moment while I gather a list of all available modules...
''')
modules = {}
def callback(path, modname, desc, modules=modules):
if modname and modname[-9:] == '.__init__':
modname = modname[:-9] + ' (package)'
if modname.find('.') < 0:
modules[modname] = 1
def onerror(modname):
callback(None, modname, None)
ModuleScanner().run(callback, onerror=onerror)
self.list(modules.keys())
self.output.write('''
Enter any module name to get more help. Or, type "modules spam" to search
for modules whose descriptions contain the word "spam".
''')
ModuleScanner
类只是遍历内置模块和pkgutil.walk_packages
找到的模块,最后这个函数调用导入器对象的iter_modules
方法。内置导入程序不支持从Internet导入模块,因此不会搜索Internet。如果您安装自定义导入程序而不是help()
可能会触发互联网研究。
如果您有许多模块可用,则此操作可能需要一些时间。某些模块也可能需要很长时间才能导入(例如numpy
,scipy
等可能需要加载的秒数。
答案 1 :(得分:0)
在控制台export PYTHONDOCS=/usr/share/doc/python2/html/
上确定python应该搜索帮助的位置。