Michael_Levin
Окт. 19, 2010 14:51:52
Здравствуйте!
Простой вопрос: как узнать, какие модули в данный момент “заимпорчены”? Или заимпорчен ли определенный модуль?
Спасибо
Michael_Levin
Окт. 19, 2010 15:11:10
спасибо, простите, но я всё равно не понимаю..
у меня есть модуль сторонний, который из “почти всех” мест не может загрузится, в силу некоторых причин. и мне хочется в разных скриптах уметь быстро понимать, загружен он или нет, чтобы какие-то команды выполнялись по принципу: if __name__ == ‘__main__’, а те, которые принадлежат модулю этому таинственному игнорировались. сейчас я делаю через try, except IOError..
нельзя ли как-то быстро распознавать какие модули импортнуты во время данной сессии?..
guranvir
Окт. 19, 2010 19:01:16
Ну это надо вешать обработчик на ошибку парсинга или на ошибки выполнения в целом.
Michael_Levin
Окт. 19, 2010 19:33:02
спасибо! пришлось заводить переменную специальную..) print dir не срабатывает внутри инициации функций класса..
Michael_Levin
Окт. 20, 2010 12:42:34
спасибо большое! всё заработало =)
py.user.next
Окт. 21, 2010 01:37:04
>>> 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
>>>