Форум сайта python.su
Здравствуйте!
Простой вопрос: как узнать, какие модули в данный момент “заимпорчены”? Или заимпорчен ли определенный модуль?
Спасибо
Офлайн
Офлайн
спасибо, простите, но я всё равно не понимаю..
у меня есть модуль сторонний, который из “почти всех” мест не может загрузится, в силу некоторых причин. и мне хочется в разных скриптах уметь быстро понимать, загружен он или нет, чтобы какие-то команды выполнялись по принципу: if __name__ == ‘__main__’, а те, которые принадлежат модулю этому таинственному игнорировались. сейчас я делаю через try, except IOError..
нельзя ли как-то быстро распознавать какие модули импортнуты во время данной сессии?..
Офлайн
print dir()
?
Офлайн
Ну это надо вешать обработчик на ошибку парсинга или на ошибки выполнения в целом.
Офлайн
спасибо! пришлось заводить переменную специальную..) print dir не срабатывает внутри инициации функций класса..
Офлайн
import pprint
class A:
print dir()
pprint.pprint(globals())
A()
Отредактировано (Окт. 19, 2010 21:57:06)
Офлайн
>>> a = 1
>>> 'a' in dir() and 'a' in sys.modules
False
>>> 'sys' in dir() and 'sys' in sys.modules
True
>>>
Офлайн
спасибо большое! всё заработало =)
Офлайн
>>> import sys
>>> import os
>>> os = 1
>>> 'os' in dir() and 'os' in sys.modules
True
>>> type(1)
<class 'int'>
>>> type(sys)
<class 'module'>
>>> isinstance(1, int)
True
>>> isinstance(sys, module)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'module' is not defined
>>>
>>> import os
>>> a = os
>>> type(a)
<class 'module'>
>>> import types
>>> 'a' in dir() and isinstance(a, types.ModuleType)
True
>>> b = 1
>>> 'b' in dir() and isinstance(b, types.ModuleType)
False
>>>
Отредактировано (Ноя. 2, 2010 03:08:29)
Офлайн