2017-10-14 1 views
0

Ich habe eine .py-Datei mit einigen Funktionen. Eine der Funktionen benötigt Pythons csv-Modul. Lass es uns foo nennen.Verwenden eines Moduls in einem anderen Modul

Hier ist die Sache: wenn ich die Python-Shell eingeben, importieren Sie das CSV-Modul, schreiben Sie die Defitinition von foo und verwenden Sie es, alles läuft gut.

Das Problem kommt, wenn ich versuche, foo von einem benutzerdefinierten Modul zu importieren. Wenn ich die Python-Shell eingeben, das CSV-Modul importieren, das Modul foo importieren und versuchen, es zu verwenden, wird ein Fehler zurückgegeben, der besagt, dass 'CSV' nicht definiert wurde (es verhält sich, als wäre das CSV-Modul nicht gewesen) importiert).

Ich frage mich, ob ich eine Art von Umfang Verhalten im Zusammenhang mit Importen fehlt.

Wie kann ich foo aktivieren, um das csv-Modul oder ein anderes benötigtes Modul zu verwenden?

Vielen Dank im Voraus

+1

Enthält 'foo' die Anweisung' import csv'? – snakecharmerb

Antwort

0

Durch sie in der Datei importieren, die die foo Funktion definiert.

Die foo Funktion nicht weiß, im Wörterbuch suchen, um die Globals, die Sie im REPL verwenden (wo Sie csv importiert haben). Es sieht in den Globalen seines Moduls aus (es gibt natürlich andere Schritte hier), wenn es dort nicht gefunden wird, bekommst du eine NameError.

+0

εχχαριστώ! Das wird es für meinen Fall machen. Aber ich bin neugierig: Gibt es eine Möglichkeit, foo in der REPLy zu lesen oder das csv-Modul an den foo-Modulumfang zu übergeben? –

+0

@PabloM Παρακαλώ :)! Ja, Sie können das csv-Modul immer an das foo-Modul anhängen. Wenn zum Beispiel 'mod.py' der Name des Moduls ist und Sie es über' import mod' importieren, können Sie (nach dem Import von 'csv')' mod.csv = csv'. Natürlich ist das eine seltsame Art, Dinge zu tun. –

+0

Ich hatte so etwas im Sinn. Groß! Danke vielmals! –

Verwandte Themen