Mir ist heute etwas Seltsames aufgefallen, das ich gerne erklären würde. Ich war mir nicht 100% sicher, wie ich das überhaupt als Frage formulieren sollte, also kommt Google nicht in Frage. Das Protokollierungsmodul hat aus irgendeinem Grund keinen Zugriff auf die Modul-Protokollierungshandler. Probieren Sie es selbst aus, wenn Sie mir nicht glauben:
>>> 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'>
Kann jemand erklären, warum das passiert?
quelle
from module import *
. Es ist fast immer ein Fehler.import zipper
undzipper.open()
Sie genau wissen würden, welches Open ich anrufe. Umgekehrtfrom zipper import *
gefolgt vonopen()
es ist die eingebaute in offenen oder zipper.open oder sonst etwas.import zipper as z
wird sehr bevorzugt, wenn Sie müde vom Tippen werdenzipper
numpy import *
weil einige numpy-Funktionen nur funktionieren, wenn Sie alle numpy importieren (schrecklicher Designfehler von ihrer Seite IMO), aber numpy hat eine RIESIGE Anzahl von Objekten, die es importiert. Am Ende habe ich viele Funktionen überschrieben (ich glaube, Kopie war eine ... ich bin zu müde, um das zu überprüfen). Jetzt importiere ich numpy als np, wenn ich numpy so oft verwenden möchte, dass ich es nicht ertragen kann, es immer wieder zu tippen.Thomas Wouters hat diese Frage sehr gut beantwortet, aber leider habe ich diese Frage erst gefunden, nachdem ich die Antwort in der Originaldokumentation gefunden hatte. Zu diesem Zweck dachte ich, ich würde dies in der Hoffnung ergänzen, dass es in Zukunft näher an der Spitze der Suchmaschine auftaucht.
FRAGE
ANTWORTEN
Der Hauptbeitrag zu dieser Antwort ist das Hinzufügen von AttributeError beim Versuch, ein 'Modul' oder 'Paket' zu importieren.
Hoffe das hilft jemandem!
quelle
Ich habe in letzter Zeit die gleiche seltsame Situation erlebt. Ich wette, Sie haben einen Lib-Import von Drittanbietern entfernt. Das entfernte lib enthielt
from logging import handlers
oderfrom logging import *
und stellte Sie zur Verfügunghandlers
. Und in anderen Skripten hatten Sie so etwas wieimport logging
und haben es gerade benutzt,logging.handlers
und Sie haben gedacht, dass die Dinge so funktionieren wie ich.quelle