Code: Alles auswählen
from ZODB import FileStorage, DB
Code: Alles auswählen
"FileStorage" in dir(ZODB)
Wie kann ich das nun anders lösen, weil ich noch keine Ahnung von ZODB habe. Das ist ja auch mein erstes Programm. Was kann ich tun?

Code: Alles auswählen
from ZODB import FileStorage, DB
Code: Alles auswählen
"FileStorage" in dir(ZODB)
Das erste:BlackJack hat geschrieben:Wo ist denn das Problem? Hast Du denn mal versucht `FileStorage` zu importieren und eine Fehlermeldung bekommen, oder bist Du bloss verwundert, dass dieses Modul nicht ohne es zu importieren im Package-Modul enthalten ist?
Code: Alles auswählen
import logging
import ZODB
import ZODB.FileStorage
db = ZODB.DB(
ZODB.FileStorage.FileStorage(r'C:\Dokumente und Einstellungen\Robin\Desktop\Python\ZODB')
)
root = db.open().root()
logger=logging.getLogger('FileStorage')
Code: Alles auswählen
>>> ================================ RESTART ================================
>>>
Traceback (most recent call last):
File "C:/Dokumente und Einstellungen/Robin/Desktop/Python/Datenbanken/ZODB.py", line 3, in <module>
import ZODB
File "C:/Dokumente und Einstellungen/Robin/Desktop/Python/Datenbanken\ZODB.py", line 4, in <module>
import ZODB.FileStorage
ImportError: No module named FileStorage
Das hat mir geholfen, aber warum. Ich meine, es müsste doch klar sein, dass ein Script sich nicht selber importieren sollte?Lonestar hat geschrieben:evtl solltest du dein Beispielscript erst einmal umbenennen?
Guck mal nach was du importierst und wie dein Script heisst
Warum sollte man sein eigenes Programm importieren?Leonidas hat geschrieben:Warum sollte das klar sein?INFACT hat geschrieben:Das hat mir geholfen, aber warum. Ich meine, es müsste doch klar sein, dass ein Script sich nicht selber importieren sollte?
Um auf einfache Weise eine Referenz auf das aktuelle Modul zu bekommen. Und weil es, nunja, eigentlich auch logisch ist. Wenn in ``sys.path`` ``.`` an erster Stelle ist, dann würde man auch erwarten, dass die Skripte die ``.`` liegen auch vor denen die weiter hinten im ``sys.path`` liegen importiert werden.INFACT hat geschrieben:Warum sollte man sein eigenes Programm importieren?
Richtig.Leonidas hat geschrieben:Um auf einfache Weise eine Referenz auf das aktuelle Modul zu bekommen. Und weil es, nunja, eigentlich auch logisch ist. Wenn in ``sys.path`` ``.`` an erster Stelle ist, dann würde man auch erwarten, dass die Skripte die ``.`` liegen auch vor denen die weiter hinten im ``sys.path`` liegen importiert werden.INFACT hat geschrieben:Warum sollte man sein eigenes Programm importieren?
[wiki=FAQ#WarumFunktionierenImportierteModuleNicht]Tatsache[/wiki].farid hat geschrieben:Das mit dem Importieren des eigenen Programms sollte eigentlich eine FAQ sein. Ist mir auch schon oefters passiert, wenn auch nicht so direkt und unmittelbar.