Abstruses Verhalten bei Importen

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
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Ich habe zwei Dateien - beide sicher Python 3.4 - und in der einen Datei wird aus einem Modul eine Funktion korrekt importiert, wenn ich den Quellcode in eine andere Datei einfüge, kann ich es nicht mehr importieren und erhalte eine Fehlermeldung. Ich habe sichergestellt, dass das Modul korrekt installiert ist, ich habe geprüft, dass es Python 3.4 ist, ich kann Tests laufen lassen, auch im Modul funktioniert alles.

Code: Alles auswählen

ImportError: cannot import name '[...]'
Ich stehe etwas auf dem Schlauch - posten kann ich den Quellcode m. E. nicht. Hat jemand eine Idee, woher so ein Verhalten beim Import kommen könnte!?

<s>In einem dritten Skript funktioniert jetzt der Import, die Funktion lädt ein Wörterbuch ins Programm, was angezeigt wird (pprint), dann erhalte ich aber die Fehlermeldung:</s>

Code: Alles auswählen

TypeError: 'dict' object is not callable
<s>Ich suche mal in den Hilfeforen - die obige Fehlermeldung ist jetzt neu.</s>

Den 2. Fehler hat verursacht, dass ich mit woerterbuch(x) statt mit korrekt woerterbuch[x] zugegriffen habe.
BlackJack

@pixewakb: Es könnte ein anderes Modul mit dem gleichen Namen vorher im Modulsuchpfad liegen, oder Du hast vielleicht irgendwo zyklische Importe. Ersteres findet man leicht heraus in dem man das Modul importiert und gleich in der Zeile darauf mit `print()` ausgibt, und schaut ob das tatsächlich das Modul ist, welches man erwartet hat.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

BlackJack hat geschrieben:@pixewakb: Es könnte ein anderes Modul mit dem gleichen Namen vorher im Modulsuchpfad liegen, oder Du hast vielleicht irgendwo zyklische Importe. Ersteres findet man leicht heraus in dem man das Modul importiert und gleich in der Zeile darauf mit `print()` ausgibt, und schaut ob das tatsächlich das Modul ist, welches man erwartet hat.
Ich erinnere mich, dass das Modul - eine alte Funktion (outdated), 2 Klassen, 3 Funktionen - bei der Installation schon mal Probleme gemacht hat und ich es einmal möglicherweise händisch ins Verzeichnis der site-packages kopiert habe. Problem der Installation war m. E. ein Versionsproblem, d. h. die Version im setup.py-Skript ist einmal nach unten korrigiert worden.

1.) Es gibt m. E. kein weiteres Modul gleichen Namens. Auch die Funktion hat einen singulären Namen.

2.) Das Modul macht regen Gebrauch vom csv-Package, ansonsten kann ich keine Auffälligkeiten bemerken. Ich schaue es mir mit help in der Konsole an und ich lade jeweils das richtige Modul, nur eben teils mit einer Version ohne die zusätzliche Funktion. (Kann da noch irgendwo eine alte Version rumschwirren?) In einigen Fällen (!) wird die Funktion korrekt geladen, in anderen Fällen nicht. Mir erschließt sich da kein Unterschied.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Im Verzeichnis "__pycache__" habe ich gerade die Datei "modulname.cpython-34.pyc" gelöscht. Ist aber auch nicht erfolgreich.

Ich gebe es auf. Wahrscheinlich gibt es einen kleinen Fehler, der mir nicht auffällt. Importiere ich u. a. auch die Hauptklasse aus dem Modul, läuft alles, importiere ich nur die Funktionen, gibt es nur bei einer Funktion eine Fehlermeldung. Mir unverständlich. Ich schlafe mal einige Tage darüber und überlege es mir dann noch mal in Ruhe.
Antworten