3

我想跟踪导入模块时正在执行哪些导入。(目标是禁止导入有害模块,但这不是这个问题的重点。)出于 MCVE 的目的,假设我这样做:

import builtins
orig_import = builtins.__import__


def new_import(*args, **kwargs):
    print(args[0])
    return orig_import(*args, **kwargs)


builtins.__import__ = new_import

import my_module

在 Python ≤ 3.7 中,这可以按预期工作并打印my_module以及所有my_module导入的模块(以及递归这些模块导入的所有模块)。但是,在 Python 3.8.0 中,即使 my_module没有导入任何内容,我也会得到以下输出:

my_module
_io
_io

两条_io线从何而来?我试过查看文档,但找不到任何有用的东西。

4

0 回答 0