Python глобально импортирует в цикл for (предпочтительно Python 3.x) - PullRequest
0 голосов
/ 20 ноября 2018

Мой код такой:

for module in ["ffmpy","os","sys"]:
    try:
        __import__(module)
    except:
        print("Can't import ["+module+"]")

Итак, я хочу импортировать это глобально, но, похоже, этого не происходит.После этого кода у меня есть sys.path.insert(0, r"C:\Users\david\Desktop\scripts"), и консоль python сообщает мне: NameError: name 'sys' is not defined.Я не знаю, что я делаю неправильно, но вы, надеюсь, делаете.цикл.Я в основном хочу импортировать из строки, в цикле, глобально.

1 Ответ

0 голосов
/ 20 ноября 2018

Думаю, проблема в том, что, хотя вы импортировали библиотеку sys, вы не определили объект sys.

Рассмотрим два следующих примера:

# Doesn't work
__import__('sys')
sys.callstats()

Это выдает ту же ошибку: "имя 'sys' не определено", в то время как

# Works
sys = __import__('sys')
sys.callstats()

работает нормально.

Вам необходимо где-то хранить импортированные объекты.Словарь кажется разумным:

import_dict = dict()

for module in ["ffmpy","os","sys"]:
    try:
        import_dict[module] = __import__(module)
    except:
        print("Can't import ["+module+"]")


import_dict['sys'].path.insert(0, r"C:\Users\david\Desktop\scripts")

Должно работать.

Редактировать:

Как предлагает @ 9769953 в комментариях, еще лучшее решение - использовать:

globals()[module] = __import__(module)

, что позволяет вам получить доступ к sys напрямую, как обычно.

...