Как importlib.h создается из importlib ._ bootstrap в Cpython? - PullRequest
0 голосов
/ 04 августа 2020

Переписываю python систему импорта в C. Я столкнулся с проблемой: в Python/importlib.h говорится, что он сгенерирован Lib/importlib/_bootstrap.py, но даже если я изменил какой-то код в Lib/importlib/_bootstrap.py, Python/importlib.h остается неизменным.

У меня 3 вопроса:

1: Как изменить байт-код в Python/importlib.h?

2: Какова связь между Lib/importlib/_bootstrap.py и Python/importlib.h?

3: Как cpython всего работает система импорта?

1 Ответ

0 голосов
/ 10 августа 2020

После нескольких недель чтения исходного кода Python -3.6.10, я пишу здесь ответ, чтобы выразить свое понимание.

  1. Python/importlib.h генерируется Programs/_freeze_import.c. "make regen-all" необходимо повторно запустить файл _freeze_import. c. _freeze_import.c принимает входные данные Lib/importlib/*.py для генерации Python/importlib.h и Python/importlib_external.h.
  2. Lib/importlib/*.py является источником Python/importlib.h и Python/importlib_external.h.
  3. Вам необходимо погрузиться в исходный код.
...