Hallo Leute,
in meinem Lehrbuch befinde ich mich aktuell bei dem Themenkomplex: Module entwickeln und einbinden und arbeite hierbei mit IDLE und dem Terminal (Mac).
- Der erste Schritt bestand darin, eigene .py Dateien über IDLE - New File abzuspeichern.
- Danach habe ich ein modul aus verschiedenen Rechenoperationen unter taschenrechner.py abgespeichert.
Nun besteht die Aufgabe darin, folgendes Beispielmodul (modul.py):
def sag_hallo (name):
print (f"Hallo name}!")
über eine .py-Datei zu öffnen, die als hauptprogramm.py angegeben wird.
Die hauptprogramm.py wird wie folgt gestaltet:
import modul
modul.sag_hallo("Anna")
*Ich kann den Befehl über das Terminal (import modul) zwar abrufen, aber das ist doch nicht so gedacht, oder?
Bisher habe ich nämlich alle Programme, die ich geschrieben habe, über das Terminal geöffnet, z.B. "import module", oder "import taschenrechner"
Es gelingt mir also ein einzelne Datei aufzurufen, aber nicht ein Modul in einem Programm zu öffnen. Wie ist das also möglich?
Der nächste Schritt ist darauf ausgelegt, eine Funktion in der Datei modul.py zu testen, wie folgt:
def sag_hallo(name):
print (f"Hallo {name}!")
sag_hallo ("Python")
Herauskommen soll dann:
Hallo Python!
Hallo Anna!
Ich bin absolut überfragt, wie IDLE für sowas funktioniert und wie das Terminal damit in Verbindung steht.
Ich hoffe Ihr könnt mir weiterhelfen.
Liebe Grüße
Yuya
Module entwickeln und einbinden - Mac
Bitte in Zukunft code-tags fuer deinen Code verwenden, damit der korrekt die Leerzeichen erhaelt.
Was deine Frage angeht: was du da genau machst, ist mir nicht klar geworden. Um eine Begriffsklaerung vorzunehmen:
- IDLE ist deine IDE, so weit so klar.
- IDLE hat einen eingebetteten Interpreter. Das ist der "IDLE Interpreter", und hat nichts mit einem Terminal zu tun.
- Terminal ist fuer mich das Programm 'Terminal', und hat nichts mit IDLE zu tun.
Wenn du sagst, dass du im Terminal (nach meiner Definition) "import modul" ausfuehren kannst, ist das ok so, *wenn* du im richtigen Verzeichnis bist. Siehe folgende Session (ist Linux, aber das ist dafuer egal, der Mac und Python verhalten sich da gleich):
Ich hoffe das macht Dinge etwas klarer. Sonst bitte nochmal weiter ausholen, was du da genau machst und erwartest.
Was deine Frage angeht: was du da genau machst, ist mir nicht klar geworden. Um eine Begriffsklaerung vorzunehmen:
- IDLE ist deine IDE, so weit so klar.
- IDLE hat einen eingebetteten Interpreter. Das ist der "IDLE Interpreter", und hat nichts mit einem Terminal zu tun.
- Terminal ist fuer mich das Programm 'Terminal', und hat nichts mit IDLE zu tun.
Wenn du sagst, dass du im Terminal (nach meiner Definition) "import modul" ausfuehren kannst, ist das ok so, *wenn* du im richtigen Verzeichnis bist. Siehe folgende Session (ist Linux, aber das ist dafuer egal, der Mac und Python verhalten sich da gleich):
Code: Alles auswählen
deets@singlemalt:~$ cd /tmp/
deets@singlemalt:/tmp$ echo "print('testmodul')" > testmodul.py # Ein Testmodul erzeugen
deets@singlemalt:/tmp$ python testmodul.py # geht, nicht weiter verwunderlich
testmodul
deets@singlemalt:/tmp$ python -c 'import testmodul' # Geht auch, weil der aktuelle Pfad immer im Suchpfad fuer Module ist
testmodul
deets@singlemalt:/tmp$ mkdir anderes-verzeichnis
deets@singlemalt:/tmp$ cd anderes-verzeichnis/
deets@singlemalt:/tmp/anderes-verzeichnis$ python -c 'import testmodul' # Geht *nicht*, weil der Suchpfad /tmp nicht enthaelt
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'testmodul'
deets@singlemalt:/tmp/anderes-verzeichnis$ cd ..
deets@singlemalt:/tmp$ echo "import testmodul" > hauptprogramm.py
deets@singlemalt:/tmp$ python3 hauptprogramm.py
testmodul
deets@singlemalt:/tmp$ cd anderes-verzeichnis/
deets@singlemalt:/tmp/anderes-verzeichnis$ python3 ../hauptprogramm.py # Geht, weil auch der Pfad des ausgefuehrten Skriptes im Suchpfad fuer module ist1
testmodul
IDLE ist halt keine gute IDE. Skripte kannst Du über Run/Run Modul starten.
Besser ist es, im richtigen Terminal Skipte aufzurufen:
Eingerückt wird in Python immer mit 4 Leerzeichen pro Ebene, nicht mal 7 und mal 5.
Zwischen Funktionsnamen und öffnender Klammer kommt kein Leerzeichen.
Besser ist es, im richtigen Terminal Skipte aufzurufen:
Code: Alles auswählen
python skript.py
Zwischen Funktionsnamen und öffnender Klammer kommt kein Leerzeichen.
Sorry für die vergessenen tags - ich weiss leider nicht wie man das verhindert, denn Lerrzeichen werden beim Erstellen des Beitrags noch gesetzt, beim Abschicken dann aber entfernt.
Ich glaube, ich habe mich hier echt ziemlich unverständlich ausgedrückt. Die Crux der Aufgabe besteht für mich darin, zwischen der hauptprogramm.py und der Datei modul.py hin- und her zu wechseln, bzw, zu verstehen welches Medium man hierfür nutzt.
Ich habe eure Antworten jetzt so gedeutet, dass es definitiv besser ist das Terminal zum Aufrufen von .py-Dateien zu nutzen. Also habe ich hiermit weiter rumprobiert..
Nachdem Anlegen und abspeichern der Datei "hauptprogramm.py" (über IDLE), habe ich die Datei anschließend über -import hauptprogramm- über das Terminal aufgerufen.
Bin ich dann automatisch in der Datei "drin" ? Denn jetzt soll ich ja die Datei modul.py im hauptprogramm(.py) öffnen. Also nutze ich daraufhin wieder -import modul- und hoffe durch die Schrittabfolge, dass ich jetzt in meinem hauptprogramm(.py) bin und dass modul hier "rein importiert habe"(?). Ist das denn der Fall?
Denn jetzt wird es knifflig und ich soll in meine modul.py Datei gehen und hier die Funktionen testen, die o.g. sind. Aber wie komme ich denn jetzt in die Datei, wenn ich doch eigtl in hauptprogramm.py bin? Das Buch gibt hier nichts weiter an und ich soll dann folgendes ausführen:
def sag_hallo(name):
print(f"Hallo {name}!")
sag_hallo ("Python")
Das funktioniert bei mir allerdings unter Berücksichtigungen meiner Annahmen nicht.
Weiter sagt das Buch:" Wenn wir jetzt erneut hauptprogramm.py starten (WIE?), dann erhalten wir plötzlich eine weitere Ausgabe, die aus dem Modul stammt.
Hallo Python!
Hallo Anna!
Ich versteh's einfach nicht..
Sorry für das Wirr-warr...
Ich glaube, ich habe mich hier echt ziemlich unverständlich ausgedrückt. Die Crux der Aufgabe besteht für mich darin, zwischen der hauptprogramm.py und der Datei modul.py hin- und her zu wechseln, bzw, zu verstehen welches Medium man hierfür nutzt.
Ich habe eure Antworten jetzt so gedeutet, dass es definitiv besser ist das Terminal zum Aufrufen von .py-Dateien zu nutzen. Also habe ich hiermit weiter rumprobiert..
Nachdem Anlegen und abspeichern der Datei "hauptprogramm.py" (über IDLE), habe ich die Datei anschließend über -import hauptprogramm- über das Terminal aufgerufen.
Bin ich dann automatisch in der Datei "drin" ? Denn jetzt soll ich ja die Datei modul.py im hauptprogramm(.py) öffnen. Also nutze ich daraufhin wieder -import modul- und hoffe durch die Schrittabfolge, dass ich jetzt in meinem hauptprogramm(.py) bin und dass modul hier "rein importiert habe"(?). Ist das denn der Fall?
Denn jetzt wird es knifflig und ich soll in meine modul.py Datei gehen und hier die Funktionen testen, die o.g. sind. Aber wie komme ich denn jetzt in die Datei, wenn ich doch eigtl in hauptprogramm.py bin? Das Buch gibt hier nichts weiter an und ich soll dann folgendes ausführen:
def sag_hallo(name):
print(f"Hallo {name}!")
sag_hallo ("Python")
Das funktioniert bei mir allerdings unter Berücksichtigungen meiner Annahmen nicht.
Weiter sagt das Buch:" Wenn wir jetzt erneut hauptprogramm.py starten (WIE?), dann erhalten wir plötzlich eine weitere Ausgabe, die aus dem Modul stammt.
Hallo Python!
Hallo Anna!
Ich versteh's einfach nicht..
Sorry für das Wirr-warr...
Bitte setze deinen Code in Code-Tags. Die werden automatisch eingefügt, wenn du den </> Button im "vollständigen Editor drückst.
Dazwischen gehört dein Code - dann bleiben auch EInrückungen enthalten.
Bitte poste deine beiden Dateien komplett - und wie sie heißen.
Dann wie du sie ausführst.
Und was du eigentlich erwartest, was passiert.
Das Ausführen von Scripten in der Kommandozeile/Shell/Eingabeaufforderung:
Wenn python im Suchpfad und man im Verzeichnis des Scripts ist reicht also:
Dazwischen gehört dein Code - dann bleiben auch EInrückungen enthalten.
Bitte poste deine beiden Dateien komplett - und wie sie heißen.
Dann wie du sie ausführst.
Und was du eigentlich erwartest, was passiert.
Das Ausführen von Scripten in der Kommandozeile/Shell/Eingabeaufforderung:
Code: Alles auswählen
/pfad/zu/python /pfad/zum/script.py
Code: Alles auswählen
python script.py