Сегодня я заметил кое-что странное и хотел бы объяснить. Я не был на 100% уверен, как сформулировать это как вопрос, поэтому о Google не может быть и речи. Модуль logging по какой-то странной причине не имеет доступа к модулю logging.handlers. Попробуйте сами, если не верите:
>>> import logging
>>> logging.handlers
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'handlers'
>>> import logging.handlers
>>> logging.handlers
<module 'logging.handlers' from '/usr/lib/python2.6/logging/handlers.pyc'>
Кто-нибудь может объяснить, почему это происходит?
источник
from module import *
. Это почти всегда ошибка.import zipper
иzipper.open()
вы бы точно знали, в какую опцию я звонил. Наоборот,from zipper import *
следуетopen()
ли это встроенный открытый или застежка-молния, или что-то еще.import zipper as z
гораздо предпочтительнее, если вы устали печататьzipper
numpy import *
потому что некоторые функции numpy не работают, если вы не импортируете все numpy (ужасный недостаток дизайна с их стороны IMO), но numpy имеет ОГРОМНОЕ количество объектов, которые он импортирует. Я закончил тем, что перезаписал множество функций (я считаю, что копия была одной ... Я слишком устал, чтобы проверять). Теперь я действительно импортирую numpy как np, если я собираюсь использовать numpy так много, что не могу печатать его снова и снова.Томас Воутерс очень хорошо ответил на этот вопрос, но, увы, я нашел этот вопрос только после того, как нашел ответ в исходной документации. С этой целью я подумал, что добавлю к этому в надежде, что в будущем он станет ближе к вершине поисковой системы.
ВОПРОС
import module_name module_name.sub_module_name(parameter)
ОТВЕТ
import module_name
Ключевым вкладом в этот ответ является добавление AttributeError при попытке импортировать «модуль» или «пакет».
Надеюсь, это кому-то поможет!
источник
Недавно я столкнулся с такой же странной ситуацией. Итак, держу пари, вы удалили импорт некоторых сторонних библиотек. Эта удаленная библиотека содержала
from logging import handlers
илиfrom logging import *
предоставила вамhandlers
. А в другом сценарии у вас было что-то вроде,import logging
и вы только что использовали,logging.handlers
и вы думали, что все работает так же, как и я.источник