2016-06-27 6 views
0

Я пытаюсь использовать переменную в качестве модуля для импорта из Python.Python ImportLib 'No Module Named'

Использование ImportLib Я был успешно в состоянии найти тест ...

sys.path.insert(0, sys.path[0] + '\\tests') 
tool_name = selected_tool.split(".")[0] 
selected_module = importlib.import_module("script1") 
print(selected_module) 

... и напечатав select_module я могу видеть, что он успешно находит скрипт:

<module 'script1' from 'C:\\Users\\....."> 

Однако, когда я пытаюсь использовать эту переменную в коде для ее импорта из него:

from selected_module import run 
run(1337) 

Программа завершает работу со следующей ошибкой:

ImportError: No module named 'selected_module' 

Я попытался добавить инициализации .py файл в основной каталог и каталог/тест, где сценарии, но безрезультатно. Я уверен, что это просто что-то глупое, я скучаю - кто-нибудь знает?

ответ

1

Операции импорта не чувствительны к переменным! Их содержание рассматриваются как литералы

Пример:

urllib = "foo" 
from urllib import parse # loads "urllib.parse", not "foo.parse" 
print(parse) 

Обратите внимание, что from my_module import my_func будет просто связать my_module.my_func с локальным именем my_func. Если вы уже импортировали модуль через importlib.import_module, вы можете просто сделать это самостоятельно:

# ... your code here 
run = selected_module.run # bind module function to local name 
+0

Потрясающе, спасибо большое за помощь! Он отлично работал, когда я вместо того, чтобы иметь от «import», просто сделал selected_module.run. –