禁用python';s help()禁止访问web

禁用python';s help()禁止访问web,python,Python,我正在使用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

我正在使用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>'
...
警告:无法注册现有类型“GtkWidget”
...
警告:无法将类专用字段添加到无效类型“”
...
然后整个事情就悬而未决了。。。我必须启动第二个远程会话才能发送SIGKILL

显然有些地方出了问题,但最让我吃惊的是,它竟然能通过网络收集信息


Python的帮助文档不是存储在本地吗?我如何阻止它进入网络?我需要常规帮助,而不是在线帮助。

在控制台上导出PYTHONDOCS=/usr/share/doc/python2/html/来确定python应该在哪里搜索帮助。

在控制台上导出PYTHONDOCS=/usr/share/doc/python2/html/来确定python应该在哪里搜索帮助。

该命令不在internet上搜索;“在线”仅仅意味着你可以交互地使用它,在文档中它称之为“内置帮助系统”,这是不太熟悉的。它所做的是遍历所有的
PYTHONPATH
,并尝试导入每个模块,以查看系统中哪些模块可用

以下是用于获取模块列表的源代码(您可以在python源代码的
Lib/pydoc.py
下找到):

def列表模块(self,key=''):
如果键为:
self.output.write(“”)
这是匹配模块的列表。请输入任何模块名称以获取更多帮助。
''')
恰当(关键)
其他:
self.output.write(“”)
请稍候,我正在收集所有可用模块的列表。。。
''')
模块={}
def回调(路径、模块名、描述、模块=模块):
如果modname和modname[-9:::]='.\uuu init\uuuuu':
modname=modname[:-9]+'(包)'
如果modname.find('.')<0:
模块[modname]=1
def onerror(模块名称):
回调(无、modname、无)
ModuleScanner().run(回调,onerror=onerror)
self.list(modules.keys())
self.output.write(“”)
输入任何模块名称以获取更多帮助。或者,键入“模块垃圾邮件”进行搜索
对于描述中包含“垃圾邮件”一词的模块。
''')
如果
ModuleScanner
类只遍历内置模块,而
pkgutil.walk_包
找到的模块,则此函数在末尾调用导入器对象的
iter_modules
方法。内置导入器不支持从internet导入模块,因此不会搜索internet。如果安装自定义导入程序,则
help()
可能会触发internet调查

如果有很多模块可用,则此操作可能需要一些时间。一些模块也可能需要很长时间才能导入(例如,
numpy
scipy
等可能需要几秒钟才能加载)。

该命令不在internet上搜索;“在线”仅仅意味着你可以交互地使用它,在文档中它称之为“内置帮助系统”,这是不太熟悉的。它所做的是遍历所有的
PYTHONPATH
,并尝试导入每个模块,以查看系统中哪些模块可用

以下是用于获取模块列表的源代码(您可以在python源代码的
Lib/pydoc.py
下找到):

def列表模块(self,key=''):
如果键为:
self.output.write(“”)
这是匹配模块的列表。请输入任何模块名称以获取更多帮助。
''')
恰当(关键)
其他:
self.output.write(“”)
请稍候,我正在收集所有可用模块的列表。。。
''')
模块={}
def回调(路径、模块名、描述、模块=模块):
如果modname和modname[-9:::]='.\uuu init\uuuuu':
modname=modname[:-9]+'(包)'
如果modname.find('.')<0:
模块[modname]=1
def onerror(模块名称):
回调(无、modname、无)
ModuleScanner().run(回调,onerror=onerror)
self.list(modules.keys())
self.output.write(“”)
输入任何模块名称以获取更多帮助。或者,键入“模块垃圾邮件”进行搜索
对于描述中包含“垃圾邮件”一词的模块。
''')
如果
ModuleScanner
类只遍历内置模块,而
pkgutil.walk_包
找到的模块,则此函数在末尾调用导入器对象的
iter_modules
方法。内置导入器不支持从internet导入模块,因此不会搜索internet。如果安装自定义导入程序,则
help()
可能会触发internet调查


如果有很多模块可用,则此操作可能需要一些时间。一些模块也可能需要很长时间才能导入(例如,
numpy
scipy
等可能需要几秒钟才能加载)。

它说“这是联机帮助实用程序”。这可能一直存在,但不知怎么的,我以前从未注意到它?哎呀,对不起,在试图修复erorr时,不小心删除了我的评论。“联机帮助”意味着它不是打印在纸上的。在linux上,您可以安装python文档包并查看/usr/share/doc上的文档。我很确定“所有可用模块”是指安装在系统上的模块,而不是internet上的所有可用模块。当然,它只是试图导入系统中的每个模块并查找其文档?为什么你认为它正在访问internet,而不是因为网站包中的某些内容导致它挂起?“在线帮助”是一个用来描述数字化帮助系统的常用短语——它不是指“在网上”
    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".
''')