J'ai remarqué quelque chose de bizarre aujourd'hui que j'aimerais expliquer. Je ne savais pas à 100% comment formuler cela comme une question, donc Google est hors de question. Le module de journalisation n'a pas accès au module logging.handlers pour une raison étrange. Essayez-le vous-même si vous ne me croyez pas:
>>> 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'>
Quelqu'un peut-il expliquer pourquoi cela se produit?
la source
from module import *
. C'est presque toujours une erreur.import zipper
etzipper.open()
vous sauriez exactement quelle ouverture j'appelais. Au contraire,from zipper import *
suivi deopen()
est-ce le ouvert intégré ou zipper.open ou autre chose.import zipper as z
est dezipper
numpy import *
parce que certaines fonctions numpy ne fonctionnent pas à moins que vous n'importiez tous numpy (terrible défaut de conception de leur part IMO) mais numpy a un nombre ÉNORME d'objets qu'il importe. J'ai fini par écraser beaucoup de fonctions (je crois que copier en était une ... je suis trop fatigué pour vérifier). Maintenant, j'importe numpy en tant que np si je vais utiliser tellement numpy que je ne supporte pas de le taper encore et encore.Thomas Wouters a très bien répondu à cette question, mais hélas, je n'ai trouvé cette question qu'après avoir trouvé la réponse dans la documentation originale. À cette fin, j'ai pensé ajouter à cela dans l'espoir que cela se rapproche du sommet du moteur de recherche à l'avenir.
QUESTION
import module_name module_name.sub_module_name(parameter)
RÉPONDRE
import module_name
La contribution clé avec cette réponse étant l'ajout d'AttributeError lors de la tentative d'importer un 'module' ou 'package'
J'espère que cela aide quelqu'un!
la source
J'ai fait face récemment à la même situation étrange. Donc, je parie que vous avez supprimé une importation de bibliothèques tierces. Cette bibliothèque supprimée contenait
from logging import handlers
oufrom logging import *
et vous fournissaithandlers
. Et dans un autre script, vous avez eu quelque chose commeimport logging
et juste utilisélogging.handlers
et vous avez pensé que c'est ainsi que les choses fonctionnent comme moi.la source