Подтвердить что ты не робот

Как проверить, был ли импортирован один модуль python?

Как проверить, был ли модуль импортирован в python?

например, мне нужны основы:

if not has_imported("sys"):
   import sys

и

if not has_imported("sys.path"): 
   from sys import path

Спасибо!

Rgs.

Спасибо за ваши комментарии: здесь был вставлен код. автоматически импортировать все вспомогательные модули в папку, а затем вызывать те же функции имени - проверка времени выполнения python связана

4b9b3361

Ответ 1

Если вы хотите оптимизировать, не импортируя вещи дважды, сохраните себя, потому что Python уже позаботится об этом.

Если вам нужно это, чтобы избежать NameErrors или что-то: Исправьте неаккуратное кодирование - убедитесь, что вам это не нужно, то есть определите (импортируете) все, прежде чем использовать его (в случае импорта: один раз, при запуск на уровне модуля).

В случае, если у вас есть веская причина: sys.modules - словарь, содержащий все модули, уже импортированные где-то. Но он содержит только модули, и из-за того, как работает from <module> import <variable> (импортируйте весь модуль как обычно, извлеките из него вещи, которые вы импортируете из него), from sys import path добавит только sys в sys.modules (если это wasn ' t уже импортировано при запуске). from pkg import module добавляет pkg.module, как вы, вероятно, ожидаете.

Ответ 2

Я чувствую, что ответ, который был принят, не совсем корректен.

Python все еще имеет накладные расходы при одновременном импорте одного и того же модуля. Python обрабатывает его, не выдавая вам ошибки, но это не значит, что он не замедлит ваш script. Как вы увидите из приведенного ниже URL, при импорте модуля несколько раз есть значительный.

Например, в ситуации, когда вам может не понадобиться определенный модуль, за исключением определенного условия, если этот модуль большой или имеет высокие накладные расходы, тогда есть причина для импорта только при условии. Это явно не означает, что вы также неаккуратный кодер.

https://wiki.python.org/moin/PythonSpeed/PerformanceTips#Import_Statement_Overhead

Ответ 3

from sys import modules
try:
    module = modules[module_name]
except KeyError:
    __import__('m')   

это мое решение смены кода во время выполнения!