ImportError

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
bug
User
Beiträge: 2
Registriert: Mittwoch 23. September 2009, 17:32

Guten Abend,
ich habe mir einen Quelltext in Python heruntergeladen und Python 3.1 installiert, nun zum Problem:
in der Hauptdatei wird mit

Code: Alles auswählen

import general
der Unterordner general eingebunden. Dort befindet sich __init__.py, in der nun weitere Dateien eingebunden werden sollen (bis hierhin gehts), nämlich mit

Code: Alles auswählen

from net import Network 
. Obwohl die Datei net.py existiert und die Klasse Network enthält erscheint folgende Fehlermeldung:
from net import Network
ImportError: No module named net
Was muss ich tun, um net.py richtig einzubinden?
lunar

Python bindet keine "Unterordner" ein. Python kennt nur Pakete und Module, die mehr oder weniger zufälligerweise Verzeichnissen und Dateien entsprechen.

Angenommen, Du hast folgende Struktur:

Code: Alles auswählen

spam/
    |
    +--> __init__.py
    |
    +--> eggs.py
    |
    +--> foo/
                |
                +--> bar.py
"spam" ist aufgrund der Existenz von "__init__.py" ein Paket. "eggs.py" ist ein Modul im Paket "spam". Deswegen muss "eggs.py" auch über dieses Paket importiert werden:

Code: Alles auswählen

from spam import eggs
eggs.do_something()
oder

Code: Alles auswählen

import spam.eggs
spam.eggs.do_something()
An "bar.py" aber kommst Du nicht heran. Da "foo/" keine "__init__.py" enthält, ist es kein Paket und kann daher nicht importiert werden.

Klar soweit?
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Wo liegt denn net.py?
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Code: Alles auswählen

from general.net import Network
Wirf am besten mal einen Blick in das Tutorial zum Thema Module.
bug
User
Beiträge: 2
Registriert: Mittwoch 23. September 2009, 17:32

Danke cofi!
Musste nur den Ordnernamen (general) noch davor hängen, irgendwie komisch, da der Quelltext eigentlich funktionieren sollte, da ich ihn von einer externen Quelle hab.
Danke und Gute Nacht
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

bug hat geschrieben:da der Quelltext eigentlich funktionieren sollte, da ich ihn von einer externen Quelle hab.
Auch in externen Quellen (ich nehme an, du meinst ein Buch oder ne Internetseite) können Fehler sein.
Antworten