Найти - Пользователи
Полная версия: вопрос по поводу импорта модулей
Начало » Python для новичков » вопрос по поводу импорта модулей
1
Michael_Levin
Здравствуйте!
Простой вопрос: как узнать, какие модули в данный момент “заимпорчены”? Или заимпорчен ли определенный модуль?
Спасибо
regall
http://asvetlov.blogspot.com/2010/05/blog-post.html
Michael_Levin
спасибо, простите, но я всё равно не понимаю..
у меня есть модуль сторонний, который из “почти всех” мест не может загрузится, в силу некоторых причин. и мне хочется в разных скриптах уметь быстро понимать, загружен он или нет, чтобы какие-то команды выполнялись по принципу: if __name__ == ‘__main__’, а те, которые принадлежат модулю этому таинственному игнорировались. сейчас я делаю через try, except IOError..
нельзя ли как-то быстро распознавать какие модули импортнуты во время данной сессии?..
kostyasa
print dir()
?
guranvir
Ну это надо вешать обработчик на ошибку парсинга или на ошибки выполнения в целом.
Michael_Levin
спасибо! пришлось заводить переменную специальную..) print dir не срабатывает внутри инициации функций класса..
sp3
import pprint

class A:
print dir()
pprint.pprint(globals())

A()
py.user.next
>>> a = 1
>>> 'a' in dir() and 'a' in sys.modules
False
>>> 'sys' in dir() and 'sys' in sys.modules
True
>>>
Michael_Levin
спасибо большое! всё заработало =)
py.user.next
>>> 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
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB