Module einbauen

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
PalotheBear
User
Beiträge: 9
Registriert: Sonntag 15. Februar 2009, 17:48

Hallo!

habe 2 Files main.py und Ccc.py

file "main.py"
/----------------------------------------------------------------------\
from Ccc import Ccc

def fff(): return 111

c = Ccc()
c.yyy()
\----------------------------------------------------------------------/
file "Ccc.py"
/----------------------------------------------------------------------\
# from main import fff

class Ccc:
def yyy(self):
print("do Ccc.yyy, fff=", fff)
\----------------------------------------------------------------------/
Der Import von "fff" verursacht, für mich unerklärlich immer die Fehlermeldung "ImportError:cannot import name Ccc"

Bitte um Hife
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Verwende Code-Tags. Wie sieht eigentlich die Ordnerstruktur aus?
PalotheBear
User
Beiträge: 9
Registriert: Sonntag 15. Februar 2009, 17:48

Die beiden Files sind im selben Verzeichnis abgespeichert. oder meinst du was anderes?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Die Importe sind zirkulär deswegen gehts nicht. Wenn Ccc.py so aussieht gehts:

Code: Alles auswählen

class Ccc(object):
    def yyy(self):
        print 'do Ccc.yyy, fff="", fff'

from main import fff
Allerdings ist dass trotzdem unschön, strukturier dass am besten um.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Ich denke mal, dass du in dem einem Modul das andere importierst, aber im anderen das eine - du machst Cross-Importing, das tut natürlich nicht.
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

1. Traceback posten

2. Ist so eine Struktur sehr unsauber.

3. Die Module wollen sich gegenseitig importieren. Das geht so nicht. Du kannst nicht einfach einen Namen aus einem Modul holen, ohne das das Modul interpretiert wird, und dann versucht es wieder main zu importieren, welches ja grade importiert werden sollte.
Antworten