Импортировать класс Python неупакованного модуля - PullRequest
0 голосов
/ 24 февраля 2019

Учитывая .py файл в /absolute/path/file.py, который содержит класс MyClass, который не упакован [т.е. не может использовать import_module (xyz)],

как я могу динамически импортировать этот класс из другого.py файл в Python3.X?Важно, чтобы это было сделано динамически, поскольку имя и путь импортируемого класса будут отличаться в зависимости от некоторых параметров.

1 Ответ

0 голосов
/ 24 февраля 2019

Вы можете использовать importlib для импорта вашего модуля и inspect для поиска класса по имени в импортированном модуле

import importlib.util
import inspect

absolute_path = '/absolute/path/file.py'
file_name = 'file.py'
class_name = 'Class'

spec = importlib.util.spec_from_file_location(file_name, absolute_path)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)

cls = None
for member in inspect.getmembers(module):
    if member[0] == class_name:
        cls = member[1]

instance = cls()
print(instance)
# <file.py.Class object at 0x7f3e002c0000>
...