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

Module einbauen

Beitragvon PalotheBear » Montag 16. März 2009, 21:27

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: 2405
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Montag 16. März 2009, 21:30

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

Beitragvon PalotheBear » Montag 16. März 2009, 21:34

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

Beitragvon DasIch » Montag 16. März 2009, 21:44

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

Beitragvon Dauerbaustelle » Montag 16. März 2009, 21:44

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

Beitragvon str1442 » Montag 16. März 2009, 21:46

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.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]