Я создаю прототип расширения Python C, которое должно очень быстро импортировать большое количество модулей Python с минимальными издержками.Мое расширение будет знать имена модулей и их абсолютные пути на основе собственной логики.Я хотел бы избежать использования встроенного механизма импорта (то есть мне не нужно искать sys.path, чтобы найти модуль) и избегать использования importlib , потому что это огромные издержки ссто модулей.
Я пытаюсь найти чистую альтернативу C-API этого:
from importlib import util
spec = util.spec_from_file_location("stub", "/ars/python/stub.py")
stub = util.module_from_spec(spec)
spec.loader.exec_module(stub)
Я видел подобные рекомендации
PySys_SetPath("path/with/python/files");
PyObject *pModule = PyImport_ImportModule("filename_without_extension");
Этовсе еще ищет sys.path , и мне нужно его избегать.
PyObject *imp = PyImport_ImportModule("imp");
PyObject_CallMethod(imp , "load_source", args, "<my_mod>", "<mod_path>");
Этот использует старый модуль imp и печатает предупреждения об устаревании.Непонятно, как заменить его новым importlib , поскольку такого высокоуровневого метода load_source не существует, как в старом imp .
Любые идеи приветствуются, спасибо.