на всё повлияет или только на этот?
"Этот" — это какой? Если коротко и слегка упрощённо, оно выкинет конкретный модуль из кэша и выполнит заново. Вполне вероятны спецэффекты, поэтому не стоит применять для модулей, которые к такому не подготовлены.
"этот" - файл с импортами
Что за "файл с импортами"?
типа инит, где куча всякого вкручено для импорта в меин
Релоад перезагружает конкретный один модуль
Я нифига не понял.
Зайдём с другой стороны. А чего ты хочешь добиться релоадом? Это крайне специфическая штука и просто так не используется.
у меня просто спортивный интерес, я не собираюсь этим пользоваться
Ок, механику импорта ты уже изучил, понимаешь, что при нём происходит?
начнем с того что релоад не работает на файл
При указе названия сначала идёт поиск во встроенных, нет там - идёт по пути, нет и тут - ошибка При импорте выполняется весь код внутри модуля и если есть инит
нет, я просто на тестах релоада из папки импортил не конкретные функции, а сами модули, поэтому их файлами обозвал
а почему сперва идёт поиск во встроенных?
Ну, различие встроенных/не встроенных по сути нет, но вот дальше, про выполнение кода — этапы пропущены. В контексте твоего вопроса это важно.
я пошёл на доку питона и единственное что понял, что модули в питоне сидят в кэше sys.modules И может я херово читал, но чёткого ответа не нашёл, поэтому думаю, что потому что сначала модули ищутся в sys.modules, а там они уже записаны, а уже потом в sys.path
ответ: >>> sys.meta_path [<class '_frozen_importlib.BuiltinImporter'>, <class '_frozen_importlib.FrozenImporter'>, <class '_frozen_importlib_external.PathFinder'>]
https://t.me/advice17/25 и выше пост
Обсуждают сегодня