Seite 1 von 1
Modul einfügen und Funktionen abrufen nicht durchführbar
Verfasst: Montag 7. April 2014, 16:23
von duodiscus
Hallo zusammen,
ich habe ein Modul mithilfe von Funktionen erstellt, das Berechnungen zu verschiedensten Sachen durchführen kann.
Jetzt möchte ich dieses Modul in eines meiner nächsten Programme importieren.
Dieses habe ich wie folgt gemacht:
Code: Alles auswählen
import sys
sys.path.append('/Users/Docments/Python/Formeln.py')
import Formeln
Wenn ich nun eine Funktion daraus abrufen will und ich Beispielsweise "Kegel( " eingebe, werden keine Parameter der Funktion angezeigt, was mit soviel sagt wie das er die Funktion nicht kennt. Dieses wird auch in der Fehlermeldung ausgegeben das die Funktion nicht definiert ist.
Was mache ich denn beim implementieren des Moduls falsch? Weiß das einer?
Danke.
Re: Modul einfügen und Funktionen abrufen nicht durchführbar
Verfasst: Montag 7. April 2014, 16:41
von BlackJack
@duodiscus: Schau Dir doch mal den Inhalt und die Dokumentation von `sys.path` genauer an. Da kommen keine Pfade mit Dateinamen rein.
Mit `sys.path` würde ich aber sowieso nicht so herum spielen. Höchstens um dort einen Pfad relativ zum Modul hinzuzufügen, aber nicht um absolute Pfade hinzuzufügen.
Re: Modul einfügen und Funktionen abrufen nicht durchführbar
Verfasst: Montag 7. April 2014, 18:23
von duodiscus
Auch wenn ich Pfade ohne Dateinamen angebe ändert das nichts an meinem Fehler. Habe in der Doku dazu gelesen, aber daraus auch keinen Lösungsweg gefunden. Uns würde vorgegeben damit zu arbeiten.
Re: Modul einfügen und Funktionen abrufen nicht durchführbar
Verfasst: Montag 7. April 2014, 18:58
von /me
duodiscus hat geschrieben:Auch wenn ich Pfade ohne Dateinamen angebe ändert das nichts an meinem Fehler. Habe in der Doku dazu gelesen, aber daraus auch keinen Lösungsweg gefunden. Uns würde vorgegeben damit zu arbeiten.
Du hast also einen Pfad namens '/Users/Docments/Python' in dem sich die Datei Formeln.py befindet (ist das
Docments eigentlich ein Schreibfehler oder eine 8-Zeichen-Konvention?). Modulnamen sollten nach dem
Style Guide for Python Code zwar nur aus Kleinbuchstaben bestehen, aber ein echter Fehler ist deine Benennung nicht.
Das "import Formeln" funktioniert anscheinend, zumindest hast du uns keine Fehlermeldung an der Stelle benannt.
Nehmen wir mal an, in der Datei
Formeln.py befände sich eine Funktion namens
do_something. Ich habe den starken Verdacht, dass du jetzt direkt versuchst
do_something() auszuführen. Durch den Import werden aber die Funktionen nicht in den Namensraum des Aufrufers übernommen. Der Aufruf muss folglich mit
Formeln.do_something() erfolgen.
Re: Modul einfügen und Funktionen abrufen nicht durchführbar
Verfasst: Dienstag 8. April 2014, 09:09
von duodiscus
Danke für deine Antwort /me. Genau in dem Pfad befindet sich die Datei (es handelt sich um einen Schreibfehler bei Documents). Okay, danke den Style Guide werde ich mir mal genauer anschauen. Ja der import hat funktioniert und es hat sich um den Fehler, den du weiter unten beschrieben hast gehandelt.
Wenn ich es so Aufrufe wie von dir beschrieben, funktioniert es einwandfrei. Ich wusste nicht, das man den Modulnamen am Anfang setzen muss und dann erst die Funktion aufrufen kann.
Das hat mir sehr weitergeholfen. Danke!

Re: Modul einfügen und Funktionen abrufen nicht durchführbar
Verfasst: Dienstag 8. April 2014, 11:14
von /me
duodiscus hat geschrieben:Ich wusste nicht, das man den Modulnamen am Anfang setzen muss und dann erst die Funktion aufrufen kann.
Du kannst die Funktion auch direkt in den Namensraum holen. In dem Fall brauchst du den Modulnamen nicht
Vereinzelt sieht man auch Code der Art "
from os import *". Damit holt man direkt alles aus dem Modul in den globalen Namensraum. Das wirkt ungemein praktisch, ist aber in Wahrheit recht übel, da man damit komplett die Kontrolle darüber verliert, was man jetzt eigentlich wirklich im Zugriff hat. Das Modul
os ist auch direkt ein gutes Beispiel, denn mit einem Sternchenimport hat man sich plötzlich die
eingebaute open-Funktion durch
open aus os überschrieben und wundert sich dann über anscheinend unerklärliche Fehler.