Импортировать модули из списка или продиктовать в Python?
Я довольно хорошо разбираюсь в Python, однако это было проблемой в течение довольно долгого времени для меня.
У меня есть папка, полная сценариев, которые художники в моей студии используют в Nuke. Чтобы они были доступны изнутри, мне нужно импортировать их через файл init.py, который Nuke читает при загрузке.
Я хотел бы иметь возможность составить список этих значений, либо с помощью поиска по всему миру, чтобы найти все применимое, или объявленный список, как:
my_list = ['mod_1', 'mod_2', 'mod_3']
Тем не менее я не смог найти метод, который может справиться с этим. Я знаю, что могу использовать имена переменных, чтобы найти модули и импортировать их через:
module = getattr(__import__(package, fromlist=[name]), name)
или же
module = __import__(var)
но оба эти метода требуют, чтобы я назначил имя для модуля, который я импортирую.
Я ищу способ сделать что-то вроде этого:
capture = glob.glob('/scriptLocation/*.py')
for i in capture:
import i
или же
my_list = ['mod_1', 'mod_2', 'mod_3']
for i in capture:
import i
ТИА!
1 ответ
Попробуй это:
modules = map(__import__, moduleNames)
Проверьте эту ссылку для более: (пример 16.15)
>>> moduleNames = ['sys', 'os', 're', 'unittest'] 1
>>> moduleNames
['sys', 'os', 're', 'unittest']
>>> modules = map(__import__, moduleNames) 2
>>> modules 3
[<module 'sys' (built-in)>,
<module 'os' from 'c:\Python22\lib\os.pyc'>,
<module 're' from 'c:\Python22\lib\re.pyc'>,
<module 'unittest' from 'c:\Python22\lib\unittest.pyc'>]
>>> modules[0].version 4
'2.2.2 (#37, Nov 26 2002, 10:24:37) [MSC 32 bit (Intel)]'
>>> import sys
>>> sys.version
'2.2.2 (#37, Nov 26 2002, 10:24:37) [MSC 32 bit (Intel)]'