Я работаю над проектом, в котором я импортирую записную книжку как модуль в другой модуль.Я использую пример на IPython GH, и он отлично работает.
Однако сейчас я пытаюсь добавить функцию, для которой мне нужен доступ к исходному коду (inspect.getsourcelines()
)функции / класса-метода.Эта функция работает, когда я выполняю ее в одной записной книжке.Однако, как только я импортирую функцию в виде модуля, inspect не может больше читать источники.
Это потому, что код выполняется через exec(code, mod.__dict__)
, что, как ожидается, и Python по умолчанию, не разрешит источникичтобы быть прочитанным.
Я искал некоторое время, но не нашел окончательного ответа, поэтому вот мои вопросы:
- Почему в примере исходный код выполняется с
exec
?(Мое подозрение: потому что код был предварительно преобразован). РЕДАКТИРОВАТЬ: Почему run_cell
не используется в примере? - В общем, что происходит, когда я выполняю ячейку Jupyter?Код там трансформируется?РЕДАКТИРОВАТЬ: я предполагаю, что это
run_cell
, я прав? - Можно ли изменить пример module-import для использования стандартной команды execute-cell и разрешить использование
inspect
посмотреть на источники?