importlib.h 如何从 Cpython 中的 importlib._bootstrap 生成?

How does importlib.h generated from importlib._bootstrap in Cpython?

我正在用 C 重写 python 导入系统。我遇到了一个问题:在 Python/importlib.h 中,它说它是由 Lib/importlib/_bootstrap.py 生成的,但即使我更改了一些代码Lib/importlib/_bootstrap.pyPython/importlib.h保持不变。

我有 3 个问题:

1: 如何更改 Python/importlib.h 中的字节码?

2:Lib/importlib/_bootstrap.pyPython/importlib.h有什么关系?

3:cpython导入系统的总体工作原理是什么?

看了几个星期的Python-3.6.10的源码,写下我的理解

  1. Python/importlib.h是由Programs/_freeze_import.c生成的。 “make regen-all”需要重新运行 _freeze_import.c 文件。 _freeze_import.cLib/importlib/*.py 的输入生成 Python/importlib.hPython/importlib_external.h.
  2. Lib/importlib/*.pyPython/importlib.hPython/importlib_external.h 的来源。
  3. 您需要深入研究源代码。