У меня есть файл ./model_scripts/medians.py
, содержащий функцию predict_volume()
. [Вывод tree
в терминале bash приведен ниже]
model_scripts
├── __init__.py
├── medians.py
└── ...
Мне нужно импортировать эту функцию в другой скрипт Python, где имя скрипта Python, из которого должна быть импортирована функция (т.е. medians.py
), имеет форму строковой переменной. Код, который я написал:
model_name = 'medians'
...
model = getattr(__import__('model_scripts'), model_name)
vol = model.predict_volume()
Но я получаю следующую ошибку в первой строке:
AttributeError: 'module' object has no attribute 'medians'
Прочитав другие ответы (здесь ), я добавил __init__.py
в каталог model_scripts
. Но я все еще получаю вышеуказанную ошибку.
В этом ответе предлагается использовать importlib
:
import importlib
model_name = 'medians'
...
model = importlib.import_module('model_scripts.'+model_name)
vol = model.predict_volume()
Буду признателен за любые идеи о том, почему первый подход не работает, а второй работает.
from model_scripts import medians
, а второй эквивалентенimport model_scripts.medians
, которые являются двумя разными запросами. - person cdhowie   schedule 07.03.2017model = model_scripts.medians
? - person IM94   schedule 07.03.2017model_scripts
даже экспортируетmedians
. Работает лиfrom model_scripts import medians
так, как вы думаете? - person cdhowie   schedule 07.03.2017