Я ломаю голову, чтобы придумать быстрый способ импорта моих пользовательских файлов Python, имена которых являются переменными и определяются вводом. Я пытаюсь сделать так, чтобы моя точка входа отправляла данные другим классам для обработки.
Структура папки:
root/
├─ dir1/
│ ├─ file1.py
├─ entrypoint.py
├─ dir2/
├─ dir3/
Все, что я пробовал, за исключением прямого выполнения from dir1 import file1
, занимает 2-3 секунды, что слишком долго для моего использования и заставляет меня думать, что importlib
сканирует все другие каталоги, прежде чем, наконец, найти правильный модуль.
Я пробовал это с importlib
:
input_dir = "dir1"
input_file = "file1"
spec = importlib.util.spec_from_file_location(input_file,
f'{os.path.dirname(os.path.abspath(__file__))}/{input_dir}/{input_file}.py')
class_ = importlib.util.module_from_spec(spec)
spec.loader.exec_module(class_)
file1.py
, даже еслиfile1.py
уже был загружен предыдущим выполнением того же кода. Это то, что вы хотите, чтобы произошло? (Обычный импорт этого не делает.) - person user2357112 supports Monica   schedule 07.07.2021module = importlib.import_module(whatever_fully_qualified_name)
? - person user2357112 supports Monica   schedule 07.07.2021