Matroids Matheplanet Forum Index
Moderiert von Bilbo
Matroids Matheplanet Forum Index » Informatik » Python Funktion aufrufen
Autor
Schule Python Funktion aufrufen
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 3144
  Themenstart: 2023-02-08

hallo, hab eine Funktion geschrieben, die funktioniert und in einer Datei namens Funktion.py gespeichert. im selben Verzeichnis hab ich ein Program-Datei, die die Def_Funktion aufruft. ich hab die Datei eingebunden mit import Def_Funktion.py aber er sagt: ModuleNotFoundError: No module named 'Def_Funktion.py'; 'Def_Funktion' is not a package" Damit kann ich nun nichts anfangen. Was könnte man als Troubleshooting probieren? Chat GPT ist mit seiner Weisheit am Ende...


   Profil
PeterMeier123
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 09.07.2018
Mitteilungen: 193
  Beitrag No.1, eingetragen 2023-02-08

Ist das eine Scherzfrage und ich habe etwas nicht verstanden? 🤔 Falls das kein Scherz sein soll: Der Inhalt von "Funktion.py" könnte so aussehen: \sourceon Python def testFunktion(): print("Hallo") \sourceoff In deiner Testdatei ich nenne sie "Test.py" könnte dann der Inhalt so aussehen, wenn du die testFunktion aus Funktion.py aufrufen möchtest: \sourceon Python from Funktion import testFunktion # ... testFunktion() # ... \sourceoff Eine andere Möglichkeit wäre mit "import Funktion as fkt" zu arbeiten, dann müsste man die testFunktion so aufrufen "fkt.testFunktion()" Du kannst natürlich auch so arbeiten "import Funktion" und rufst das mit "Funktion.testFunktion()" auf. Das sollte eigentlich alles gehen. Ich habe das jetzt selbst einmal mit einem Beispiel durchexerziert. Gibt es irgendwelche speziellen Verzeichnisstrukturen oder Dateiberechtigungen?


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 3144
  Beitrag No.2, vom Themenstarter, eingetragen 2023-02-08

Ich habe hundertmal mit anderen Programmen gemacht, und es hat funktioniert. Aber Heute funkioniert es halt nicht. Hab schon alle Grossbuchstaben gegen kleine getauscht, Verzeichnisse und Namen stimmen. Das "#!/usr/bin/env python3" hab ich auch drin... Was tun, eventuell hat es damit zu tun, dass die aufrufende Datei eine Excel Datei öffnet, und da soll die Funktion dann was reinschreiben .... nochnicht gelöst das Problem....


   Profil
MontyPythagoras
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 13.05.2014
Mitteilungen: 3277
Wohnort: Werne
  Beitrag No.3, eingetragen 2023-02-08

Hallo Bekell, ich zitiere Dich: \quoteon(2023-02-08 13:35 - Bekell im Themenstart) in einer Datei namens Funktion.py gespeichert \quoteoff \quoteon(2023-02-08 13:35 - Bekell im Themenstart) eingebunden mit import Def_Funktion.py \quoteoff Vielleicht speicherst Du es in einer Datei namens "Def_Funktion.py" statt "Funktion.py", dann wird "import Def_Funktion.py" vielleicht auch funktionieren? Python sagt: "ModuleNotFoundError: No module named 'Def_Funktion.py'" Klarer geht es doch nicht. Ciao, Thomas


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 3144
  Beitrag No.4, vom Themenstarter, eingetragen 2023-02-08

\quoteon Klarer geht es doch nicht.Thomas \quoteoff So sieht der Funktionsaufruf in der aufrufenden Programm aus: https://matheplanet.com/matheplanet/nuke/html/uploads/c/23651_A_Funkrionsaufruf.png So sieht der Funkionsname im selben Verzeichnis wie aufrufendes Programm aus: https://matheplanet.com/matheplanet/nuke/html/uploads/c/23651_AVerzeichnisbild.png Und so sieht der Funktionskopf in der Funktionsdatei aus: https://matheplanet.com/matheplanet/nuke/html/uploads/c/23651_A_Funktionskopf.png Weiterhin kommt: ModuleNotFoundError: No module named 'def_Tabmaker.py'; 'def_Tabmaker' is not a package


   Profil
MontyPythagoras
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 13.05.2014
Mitteilungen: 3277
Wohnort: Werne
  Beitrag No.5, eingetragen 2023-02-08

Hallo Bekell, warum beschreibst Du dann das Problem ganz anders in Deinem Threadstart? Lass Dir aus dem aufrufenden Programm heraus zum Beispiel mit os.listdir() anzeigen, welche Module er denn kennt und findet. Oder in welchem Pfad er überhaupt sucht. Leg zum Beispiel noch eine zweite Datei an, die Du dann importierst (oder auch nicht, wenn es fehlschlägt). Wenn da noch andere Module sind, die Du erfolgreich importieren kannst, leg die def_Tabmaker.py in den gleichen Ordner, wo die anderen importierten Module liegen. Ich vermute, Python sucht an der falschen Stelle. Das sagt zumindest die Fehlermeldung. Ciao, Thomas


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 3144
  Beitrag No.6, vom Themenstarter, eingetragen 2023-02-08

Ich hab: \sourceon nameDerSprache \numberson import os DateienOrdner = os.listdir() print(DateienOrdner ) \sourceoff gemacht, funktioniert auch nicht.... ich hab eins Verzeichnis in besagtem Verzeichnis, es heisst: "_pycache_" Da ist folgendes drin: https://matheplanet.com/matheplanet/nuke/html/uploads/c/23651_A_VerzeichnisCache.png Was heisst denn das? Ich hab das Verzeichnis weder angelegt, noch die Dateien dorthin abgespeichert. Heute scheint schwarzer Tag zu sein, erst hat alles so gut geklappt, und nun schon 5 Stunden das...


   Profil
Knaaxx
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 06.05.2006
Mitteilungen: 2728
  Beitrag No.7, eingetragen 2023-02-08

Hallo Denke Monthy hat die richtige Vermutung. Das Ding wird nicht gefunden weil nicht im Pfad. Du kannst auch das mal probieren \sourceon nameDerSprache import sys sys.path.append('Verzeichnispfad ohnE die Funktionsdatei-Datei') \sourceoff [Die Antwort wurde vor Beitrag No.6 begonnen.]


   Profil
schnitzel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 26.02.2009
Mitteilungen: 223
  Beitrag No.8, eingetragen 2023-02-08

Wenn deine Datei Funktion.py und die Funktion darin Def_Funktion heißt, musst du sie mit from Funktion import Def_Funktion aufrufen. Wenn du da irgendwelche Punkte mit einbaust, ist das für python ein "Pfad" in einem Package. Gruß


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 3144
  Beitrag No.9, vom Themenstarter, eingetragen 2023-02-08

Hab das in der aufrufenden Datei im Kopf: \quoteon from def_Tabmaker.py import def_Tabmaker \quoteoff und das ist der Aufruf: \quoteon def_Tabmaker(1,2,3,4) \quoteoff Es passiert nichts... Das sagte er: \quoteon No module named 'def_Tabmaker.py'; 'def_Tabmaker' is not a package \quoteoff Es ist merkwürdig, weil sie sich beide Dateien wirklich im selben Verzeichnis befinden. was meint er denn genau, wenn er sagt: "Def_Tabmaker is not a package." Ich hab ja schon mindestens 100 Mal selber externe Funktionen programmiert und woanders eingebaut. Aber dafür noch nie eine Anleitung zum Bauen einer Package benötigt...


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 4412
  Beitrag No.10, eingetragen 2023-02-08

\quoteon(2023-02-08 20:03 - Bekell in Beitrag No. 9) \quoteon from def_Tabmaker.py import def_Tabmaker \quoteoff \quoteoff Das Modul, das eine Datei foo.py definiert, heisst nicht foo.py, sondern foo.


   Profil
Bekell hat die Antworten auf ihre/seine Frage gesehen.
Bekell wird per Mail über neue Antworten informiert.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]