Python: aufrufende Funktion aus importierten Datei
Wie nennt man eine Funktion aus einer importierten Datei? zum Beispiel:
Test:
import test2
def aFunction():
print "hi there"
Test2:
import test
aFunction()
Diese geben Sie mir einen Namen-Fehler, sagen meine Funktion nicht definiert ist. Ich habe auch versucht:
from test import aFunction
Und:
from test import *
Ich habe auch versucht nicht importieren, test2, test. Ich komme, um von Python aus C++, so dass ich fürchte, ich bin etwas fehlt offensichtlich für erfahrene Python-progammers...
- Ihre
from test import aFunction
sollte gearbeitet haben, welche Fehler hast du gesehen? - Beachten Sie, dass es auch eine
test
- Paket im Lieferumfang von Python, könnte Sie importieren, statt. - Ich hatte den gleichen Fehler bei meinem größeren Projekt, ich habe die Dateien testen, nur um zu zeigen mein problem. Ich war immer der Fehler "Import Error: could not import name 'aFunction'".
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie eine kreisförmige importieren.
test.py
Importetest2.py
die versucht zu importierentest.py
.Tun das nicht. Durch die Zeit, die
test2
Importetest
, dass das Modul noch nicht abgeschlossen ist die Ausführung aller code, die Funktion ist noch nicht definiert:test
kompiliert und ausgeführt, und ein Modul-Objekt Hinzugefügtsys.modules
.Die Linie
import test2
ausgeführt.test2
kompiliert und ausgeführt, und ein Modul-Objekt Hinzugefügtsys.modules
.Die Linie
import test
ausgeführt.test
ist bereits als Modul insys.modules
dieses Objekt wird zurückgegeben und gebunden an die Namentest
.Nächsten Zeile versucht zum laufen
test.aFunction()
. Kein solcher name existiert intest
. Wird eine Ausnahme ausgelöst.Die Zeilen definieren
def aFunction()
werden niemals ausgeführt, da wurde eine Ausnahme ausgelöst.Entfernen Sie die
import test2
Zeile, und führen Sietest2.py
direkt, und der Import-Funktion funktioniert Prima:test
um etwas anderes. Stellen Sie sicher, dass Sie entweder importierenaFunction
als global, oder finden Sie es über das Modul.from test import aFunction
bindet es als eine Globale.