如何避免RuntimeError而调用__dict__模块?



它出现在一些大型模块中,如matplotlib。例如表达式:

import importlib
obj = importlib.import_module('matplotlib')
obj_entries = obj.__dict__ 

运行间隔len ofobj_entries可能是不同的。从108到157(预期)条目。特别是pyplot可以像其他子模块一样被忽略。在dict后加上len计算语句,可以在手动调试模式下稳定工作。提取。但是在auto中它不能很好地工作。

出现这样的错误:

RuntimeError: dictionary changed size during iteration
python-BaseException

在windows上使用clear python 3.10。版本交换不会改变任何东西

在一些尝试中发现了一些有趣的特性。使用reprdict之前是有用的启动。但是如果模块像变量一样在类之间传输更有可能发生惰性导入?目前有证据表明,并不是所有的名字显示当命令行解释器做相反的-返回预期的。所以这些垃圾代码帮助绕过了这种行为…注意:使用pkgutil.iter_modules(some_path)查看内部模块pkgutil ModuleInfo形式。

import pkgutil, importlib
module_info : pkgutil.ModuleInfo
name = module_info.name
founder = module_info.module_finder
spec = founder.find_spec(name)
module_obj = importlib.util.module_from_spec(spec)
loader = module_obj.__loader__
loader.exec_module(module_obj)

仍然不熟悉内部的导入机制,所以它将有助于收到一些链接,以更详细的解释(现场)

相关内容

  • 没有找到相关文章

最新更新