Использование метода импортированного модуля Python без явного вызова import - PullRequest
0 голосов
/ 13 января 2019

У меня есть код, в котором я хочу использовать раскраску терминала colorama, но для этого (так как этот код будет работать на разных машинах), мне нужно убедиться, что модуль colorama существует на текущем компьютере, и если нет, установить его из внутри кода, а затем импортируйте его.

В настоящее время у меня есть это:

def import_or_install(package, version):
    try:
        __import__(package)
    except ImportError:
        subprocess.call([sys.executable, '-m', 'pip', 'install', '{}=={}'.format(package, version)])

В моем случае package - это "colorama", а версия - "0.4.1", но когда я запускаю следующее, я получаю сообщение об ошибке "name 'colorama' не определено", и я не знаю, как использовать colorama после установки через import_or_install.

if __name__ == "__main__":
    import_or_install("colorama", "0.4.1")

    colorama.init()
    print(colorama.Fore.RED, 'some red text')
    print(colorama.Back.GREEN, 'and with a green background')
    print(colorama.Style.DIM, 'and in dim text')
    print(colorama.Style.RESET_ALL)
    print('back to normal now')

Я был бы очень признателен за объяснение того, как я могу сделать эту работу (возможно, использовать второй код Python для установки, а затем запустить основной код?)

...