Seite 1 von 1

Eigene Module erstellen

Verfasst: Sonntag 5. Februar 2017, 21:40
von Slim Shady
Hallo,

Ich arbeite gerade zu Übungszwecken an meinem eigenen Programm, mit dem man sich morgens ein Frühstück zusammenstellen kann.
Dieses Programm möchte ich nun, da es schon einige Zeit fertig ist, mit einer Menüfunktion ausstatten. Ich möchte diesen Menüscript mit Listen realisieren (Auch nur zu Übungszwecken) und ihn in einer seperaten Datei auslagern. Ich habe sie also menue.py genannt und zu Testzwecken

Code: Alles auswählen

print ("Test!")
geschrieben, um sicherzustellen, dass alles geklappt hat.
Wenn ich aber mit import menue.py die Datei, die im gleichen Verzeichnis wie die Hauptdatei liegt, aufrufen will, gibt er mir diesen Error aus:

Traceback (most recent call last):
File "/root/Schreibtisch/Python/Noels Sammelsurium tatsächlich nützlicher Anwendungen/Frühstücksmenu/Frühstück_Version_2.py", line 2, in <module>
import menue.py
ImportError: No module named 'menue.py'; 'menue' is not a package

Allerdings steht trotzdem über den Error noch "Test", was ja heißt das er das ja irgendwie aufgerufen haben muss.
Wie kann ich ihn dazu bringen, die Datei korrekt aufzurufen?

Außerdem: Wenn ich den importierten Script dann an einer bestimmten Stelle im Hauptcode aufrufen möchte, kann ich da ja nicht einfach das machen, oder?:
menue()

Weil ich die Funktion gar nicht definiert habe, oder?

Ich entschuldige mich im vorraus, wenn das alles ein wenig wirr klingt, ich bin noch ein blutiger Anfänger.

Re: Eigene Module erstellen

Verfasst: Sonntag 5. Februar 2017, 22:00
von __deets__
Dein Problem ist, dass du mit ".py" importierst. Das ist nicht so gedacht, ein Modul mit Dateinamen "menue.py" importiert man mit "import menue".

Dadurch das du "import menue.py" machst, versucht Python zuerst ein *Paket* menue zu importieren. Es findet dein Modul "menue.py", fuehrt also auch das print aus. Dann versucht es das Unter-Modul oder Paket "menue.py" zu importieren - und das gibt's ja nunmal nicht.

Also einfach das .py weg lassen, und dann sollte alles klappen.

Re: Eigene Module erstellen

Verfasst: Dienstag 7. Februar 2017, 20:21
von Slim Shady
Danke, dass hat geklappt! :)
Eine Frage noch; Wenn ich den Code jetzt importiere, wird dieser direkt nach import menue ausgeführt. Wie kann ich ihn so lenken, das er erst nach einem Funktionsaufruf ( menue() ?) angezeigt wird. bzw. wenn der User sich ein Menü zusammen stellen will?

Re: Eigene Module erstellen

Verfasst: Dienstag 7. Februar 2017, 21:52
von BlackJack
@Slim Shady: In dem Du eine Funktion schreibst die man nach dem Importieren erst aufrufen muss.

Re: Eigene Module erstellen

Verfasst: Dienstag 7. Februar 2017, 22:06
von pixewakb
Gemeint ist konkret Folgendes:

modul.py

Code: Alles auswählen

def say_hallo(name):
    print("Hallo {}!".format(name))
main.py

Code: Alles auswählen

from modul import say_hallo

say_hallo("Slim Shady")