Percebi algo estranho hoje que gostaria que fosse explicado. Eu não estava 100% certo de como formular isso como uma pergunta, então google está fora de questão. O módulo de registro não tem acesso ao módulo logging.handlers por algum motivo estranho. Experimente você mesmo se não acredita em mim:
>>> 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'>
Alguém pode explicar por que isso acontece?
fonte
from module import *
. Quase sempre é um erro.import zipper
ezipper.open()
você soubesse exatamente para qual abertura eu estava ligando. Ao contrário,from zipper import *
seguido poropen()
é o open embutido ou zipper.open ou qualquer outra coisa.import zipper as z
é muito preferido se você se cansar de digitarzipper
numpy import *
porque algumas funções numpy não funcionam a menos que você importe todos os numpy (falha de design terrível da parte deles, IMO), mas numpy tem um número ENORME de objetos que importa. Acabei substituindo muitas funções (acredito que cópia foi uma ... Estou cansado demais para verificar). Agora eu importo numpy como np se vou usar numpy tanto que não suporto digitá-lo indefinidamente.Thomas Wouters respondeu muito bem a essa pergunta, mas, infelizmente, só encontrei essa pergunta depois de encontrar a resposta na documentação original. Para esse fim, pensei em acrescentar algo na esperança de que ele apareça mais perto do topo do mecanismo de pesquisa no futuro.
QUESTÃO
import module_name module_name.sub_module_name(parameter)
RESPONDA
import module_name
A principal contribuição com esta resposta é a adição de AttributeError ao tentar importar um 'módulo' ou 'pacote'
Espero que isso ajude alguém!
fonte
Eu enfrentei recentemente a mesma situação estranha. Então, aposto que você removeu alguma importação de lib de terceiros. Essa lib removida continha
from logging import handlers
oufrom logging import *
e fornecia a vocêhandlers
. E em outro script você teve algo parecidoimport logging
e acabou de usarlogging.handlers
e você pensou que é assim que as coisas funcionam como eu.fonte