Ответ 1
В той же папке
Если модуль находится в вашем рабочем каталоге, importlib.util.find_spec
, вероятно, достаточно для ваших целей.
Например, если вы просто хотите загрузить модуль, вы можете использовать:
-
устарел в Python 3.5 и выше:
toolbox_specs = importlib.util.find_spec("Tools") toolbox = toolbox_specs.loader.load_module()
-
, введенный в Python 3.5 и выше:
toolbox_specs = importlib.util.find_spec("Tools") toolbox = importlib.util.module_from_spec(toolbox_specs) toolbox_specs.loader.exec_module(toolbox)
Предостережение: я не тестировал это, но его прямо из документации, поэтому я полагаю, что он работает.
Вы можете оценить несколько других свойств с помощью объекта toolbox_specs
.
Однако, например, соответствующий файл-объект не входит в число них.
Если вам действительно нужно это в Python 3, вам, вероятно, придется получить путь к файлам и открыть его другими способами.
Разная папка
Чтобы найти модуль в другой папке, вы должны работать с FileFinder
, который, в свою очередь, должен знать модули тип. Например, если ваш модуль является расширением, вы можете найти спецификации следующим образом:
loader_details = (
importlib.machinery.ExtensionFileLoader,
importlib.machinery.EXTENSION_SUFFIXES
)
toolsfinder = importlib.machinery.FileFinder("Folder_of_Tools", loader_details)
toolbox_specs = toolsfinder.find_spec("Tools")
Затем вы можете обработать toolbox_specs
, как описано выше.