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

2つの_io行はどこから来たのですか?ドキュメントを調べてみましたが、役立つものは見つかりませんでした。

4

0 に答える 0