我刚刚安装了 Kivy ,发现如果我拨打help('modules')
,它会以某种方式自动启动。
虽然我还没有导入模块,但仍会发生这种情况。
我该如何解决这个问题?
答案 0 :(得分:1)
这是一个已知的(虽然有趣)错误:
https://github.com/kivy/kivy/issues/1445
它的历史可以追溯到2013年,所以可能不容易修复,但你总是可以在git问题部分施加压力。
答案 1 :(得分:1)
help('modules')
通过遍历Python安装的整个包树并读取源代码(如果模块是纯Python并且有源代码可用),或者如果它是扩展名,则将其加载到解释器中(或者没有源代码的Python模块。)
pkg_util.walk_packages
还有另一个案例,它将导入包。如果包或扩展名导入具有副作用,则会由help('modules')
触发。
一种可能的解决方法是在sys.modules
中清除违规模块,但当然这不是解决方案:
def myhelp(*args):
sys.modules['offender'] = None
help(*args)
sys.modules.pop('offender')
您需要知道的是违规模块的名称(kivy
?)。您甚至可以将此代码放入sitecustomize.py
并覆盖内置help
函数。
正确的解决方案当然是修复上游,因为对模块导入的副作用通常是一件坏事(因为它们可以有各种......好的,副作用)。