Выполнить строку как команду в Python - PullRequest
1 голос
/ 05 февраля 2009

Я занимаюсь разработкой своих вещей на python. В этом процессе я столкнулся с ситуацией, когда у меня есть строка с именем «import django». И я хочу проверить эту строку. Это означает, что я хочу проверить, находится ли упомянутый модуль (в данном случае 'django') в пути python. Как я могу это сделать?

Ответы [ 3 ]

14 голосов
/ 05 февраля 2009

Мой предыдущий ответ был неправильным - я не думал проверять свой код. Это действительно работает, хотя: посмотрите на модуль imp .

Чтобы просто проверить импортируемость модуля в текущем sys.path:

try:
    imp.find_module('django', sys.path)
except ImportError:
    print "Boo! no django for you!"
1 голос
/ 06 февраля 2009

Если имя модуля доступно в виде строки, вы можете импортировать его, используя встроенную функцию __import__.

module = __import__("module name", {}, {}, [], -1)

Например,

os = __import__("os", {}, {}, [], -1)
1 голос
/ 05 февраля 2009

Я не сомневаюсь, что это безопасно, но это самое наивное решение:

try:
     exec('import django')
except ImportError:
    print('no django')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...