Python C API: модуль импорта с абсолютным путем к файлу - PullRequest
0 голосов
/ 14 февраля 2019

Я создаю прототип расширения 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 .

Любые идеи приветствуются, спасибо.

...