Modul Funktion aufrufen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
PeterL
User
Beiträge: 95
Registriert: Samstag 6. März 2021, 18:39

Hallo Leute,

ich habe ein Script programmiert, was mir eine Datei kopieren soll.
Die Kopierfunktion habe ich in einer Funktion ausgelagert.
Wenn ich das Script mit Funktion starte, kopiert mir das Script die Datei ohne Fehler.

Wenn ich die Funktion importiere mit

Code: Alles auswählen

import BitCopy
dann erhalte ich immer
eine Fehlermeldung. Die Scripte liegen in einem angelegten extra unter Ordner.
C:\Users\XXX\Pyhton\Scripte\Bit_Copy

Traceback (most recent call last):
File "C:\Users\XXX\Pyhton\Scripte\Bit_Copy\MeinBackupStart.py", line 37, in <module>
rückgabe4 = BitCopy.kopieren(quellpfad,zielpfad)


Kann mir jemand dabei helfen ?

Danke...
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Wie lautet denn die Fehlermeldung?
Module werden klein gescrheiben.

"Bit_Copy" ist etwas anderes als "BitCopy".
PeterL
User
Beiträge: 95
Registriert: Samstag 6. März 2021, 18:39

sparrow hat geschrieben: Montag 21. Februar 2022, 20:51 Wie lautet denn die Fehlermeldung?
Module werden klein gescrheiben.

"Bit_Copy" ist etwas anderes als "BitCopy".
Die Fehlermeldung lautet:
During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\XXX\Pyhton\scripte\Bit_Copy\MeinBackupStart.py", line 37, in <module>
rückgabe4 = BitCopy.kopieren(quellpfad,zielpfad)

Bit_Copy ist der angelegte Unterordner. Und BitCopy.py ist mein Script.
Und mit MeinBackupStart.py versuche ich BitCopy.py zu starten.

Bis dann...
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Zeig doch bitte den kompletten Traceback und nicht immer so Häppchen. Wie soll man dir denn so helfen?
PeterL
User
Beiträge: 95
Registriert: Samstag 6. März 2021, 18:39

sparrow hat geschrieben: Montag 21. Februar 2022, 21:10 Zeig doch bitte den kompletten Traceback und nicht immer so Häppchen. Wie soll man dir denn so helfen?
Hallo, wie soll ich dir den kompletten Traceback zeigen ???
Wo ist der ???

Bis Dann...
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du kopierst teile davon. Nicht alles.
PeterL
User
Beiträge: 95
Registriert: Samstag 6. März 2021, 18:39

__deets__ hat geschrieben: Montag 21. Februar 2022, 21:50 Du kopierst teile davon. Nicht alles.
Hallo, ich habe die Fehlermeldung schon 2 mal kopiert.???
Sie wird im Ausgabefenster ausgegeben.
Komisch ist es das ich das mein Programm ohne Fehlermeldung starten kann.
Und aus einem anderen Script heraus es nicht geht.

Bis dann...
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Nein, du hast _Teile_ der Fehlermeodung kopiert.
Guck mal, da steht sogar:
During handling of the above exception, another exception occurred:
Above = _Darüber_ Da muss also noch etwas oben drüber gestanden haben. Und wahrscheinlich noch etwas unten drunter. Es nützt nichts, uns zu zeigen, in welcher Zeile ein Fehler auftritt, wenn du den Teil weg lässt, in dem steht, _welcher_ Fehler aufgetreten ist.
PeterL
User
Beiträge: 95
Registriert: Samstag 6. März 2021, 18:39

sparrow hat geschrieben: Montag 21. Februar 2022, 22:20 Nein, du hast _Teile_ der Fehlermeodung kopiert.
Guck mal, da steht sogar:
During handling of the above exception, another exception occurred:
Above = _Darüber_ Da muss also noch etwas oben drüber gestanden haben. Und wahrscheinlich noch etwas unten drunter. Es nützt nichts, uns zu zeigen, in welcher Zeile ein Fehler auftritt, wenn du den Teil weg lässt, in dem steht, _welcher_ Fehler aufgetreten ist.
Hallo,
ja es gibt da noch mehr Fehlermeldungen. Die beziehen sich aber auf das Hauptprogramm.
Es werden in den Modulen die ich importiert habe Fehler ausgelöst. Sehr viele sogar.
Das ist aber egal da mein Hauptprogramm Fehlerfrei Läuft.
Erst wenn ich den Aufruf aus einen Script starte werden mir Fehlermeldungen ausgegeben.
Die Kopierfunktion kann keine Dateien kopieren.
Das Hauptprogramm befindet sich in einem Unterordner, der auch nicht im Suchpfad angegeben wird. Das Script mit dem ich das Hauptprogramm aufrufe liegt im Suchpfad, ich denke das ist der Fehler. Irgendwie werden die Pfade zum kopieren nicht an das Hauptprogramm übergeben.

Ich importiere das so
import Bit_Copy.BitCopy
Ich gebe den Ordner an, und dann mein Kopierscript

Alle anderen Funktionen werden beim externen Aufruf abgearbeitet ohne Fehler. Das Hauptprogramm läuft ohne Fehler. ??

Das liegt nicht an den Modulen die verwende, die sind ok.
Der Aufruf und die Übergaben geht nicht.

Bis dann...
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn Du so genau weißt, was der Fehler ist, dann brauchst Du ja unsere Hilfe nicht.
PeterL
User
Beiträge: 95
Registriert: Samstag 6. März 2021, 18:39

Sirius3 hat geschrieben: Montag 21. Februar 2022, 22:48 Wenn Du so genau weißt, was der Fehler ist, dann brauchst Du ja unsere Hilfe nicht.
Hallo,

doch eigentlich schon, ich kann mir den Fehler nicht erklären. Es muss doch möglich sein eine Funktion aus einem anderem Modul aufzurufen. Weil das Hauptprogramm läuft.
Irgendwas mache ich falsch beim Importieren. Ich habe schon Google befragt YouTube Videos gesehen, alles nachgemacht, es geht nicht.

Bis dann...
einfachTobi
User
Beiträge: 512
Registriert: Mittwoch 13. November 2019, 08:38

PeterL hat geschrieben: Dienstag 22. Februar 2022, 00:11 Es muss doch möglich sein eine Funktion aus einem anderem Modul aufzurufen.
Jo, das ist möglich. Aber du weigerst dich ja partout die vollständige Fehlermeldung zu posten. So kann man nicht helfen. Wenn du denkst, dass der Rest nicht relevant sei, liegst du nun mal falsch.
PeterL
User
Beiträge: 95
Registriert: Samstag 6. März 2021, 18:39

einfachTobi hat geschrieben: Dienstag 22. Februar 2022, 06:22
PeterL hat geschrieben: Dienstag 22. Februar 2022, 00:11 Es muss doch möglich sein eine Funktion aus einem anderem Modul aufzurufen.
Jo, das ist möglich. Aber du weigerst dich ja partout die vollständige Fehlermeldung zu posten.
Hallo,
ja du hast ja Recht. Ich war davon überzeugt das die Fehler die in anderen Modulen auftreten nicht wichtig sind. Wie gesagt das Hauptprogramm läuft, und die Module auch.
Naja ich habe mir das ganze nochmal angesehen, und tatsächlich zwei Fehler gefunden.
Startet man das Hauptprogramm sind dort keine Fehler. Erst wen man das Hauptprogramm extern aus, einem anderen Script startet, treten Fehler auf. Was ich komisch finde, einmal läuft alles super, dann plötzlich geht nichts mehr. Ein Fehler gab es in der

Code: Alles auswählen

try:
 except Exception as e:
Angeblich war es nicht richtig eingerückt ?
Der zweite Fehler war in der Log Funktion die Fehler protokoliert.
Hier musste ich mit.
isFile = os.path.isfile('C:\\Temp\BitCopy.txt')
Den Pfad selber angeben. Vorher stand das alles in einer Variable. ?

Ok nun kann ich extern und intern mein Programm aufrufen.
Das war eine sehr lange Fehlersuche, hat aber auch irgendwie Spaß gemacht.

Danke Leute..
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@PeterL: Das was Du da zeigst ist nicht nur angeblich nicht richtig eingerückt, das ist *tatsächlich* nicht richtig eingerückt.

Und `Exception` ist *sehr* allgemein, da besteht also eine grosse Gefahr, dass der Code in dem ``except:``-Block nicht jede Ausnahme sinnvoll behandelt und nicht die Fehlersuche erschwert.

Was Du mit dem Pfad sagen willst, ist mir nicht so ganz klar.

Letztlich deutet die Beschreibung aber darauf hin, dass Du mit Pfaden relativ zum aktuellen Arbeitsverzeichnis gearbeitet hast und falsche Annahmen darüber getroffen hast, was dieses Verzeichnis konkret ist. Beliebter Fehler ist anzunehmen, dass das der Pfad ist, in dem das Python-Programm liegt.

Edit: Und wohl auch, dass Du eine falsche Ursache vermutest, also den Fehler gar nicht wirklich gefunden sondern nur zufällig korrigiert hast, ohne die Ursache wirklich verstanden zu haben.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
PeterL
User
Beiträge: 95
Registriert: Samstag 6. März 2021, 18:39

__blackjack__ hat geschrieben: Dienstag 22. Februar 2022, 17:22 @PeterL: Das was Du da zeigst ist nicht nur angeblich nicht richtig eingerückt, das ist *tatsächlich* nicht richtig eingerückt.
Und `Exception` ist *sehr* allgemein, da besteht also eine grosse Gefahr, dass der Code in dem ``except:``-Block nicht jede Ausnahme sinnvoll behandelt
Was Du mit dem Pfad sagen willst, ist mir nicht so ganz klar.
Edit: Und wohl auch, dass Du eine falsche Ursache vermutest, also den Fehler gar nicht wirklich gefunden sondern nur zufällig korrigiert hast, ohne die Ursache wirklich verstanden zu haben.
Hallo,

der Pfad in den Tempordner, dort wird BitCopx.txt angelegt. Das ist mein Fehlerprotokoll.
Dort werden Fehlermeldungen abgelegt.

Mit den abfangen von Fehlern beschäftige ich mich dann nochmal.
Tatsächlich ist es so, das ich es wirklich nicht verstehe, weswegen es einmal intern läuft,
und extern nicht. Das einrücken scheint intern ok zu. Extern sagt er mir das es ein Fehler sei.
Nun ja es läuft das ich wichtig, und ich kann meine Backups machen.
Python habe ich im Standartpfad installiert.

Bis dann...
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das abhaengig von der Aufrufstelle (direkt oder import) dieser Fehler auftritt, ist voellig unmoeglich. Die Einrueckung wird in beiden Faellen sofort am Anfang ueberprueft, und ist global zu pruefen. Wenn das dein Problem ist, dann hast du irgendwie zwei verschiedene Versionen auf der Platte, zB auch nur eine alte .pyc-Datei, die fehlerfrei ist, und die neue hat das Problem.
PeterL
User
Beiträge: 95
Registriert: Samstag 6. März 2021, 18:39

__deets__ hat geschrieben: Dienstag 22. Februar 2022, 20:00 Das abhaengig von der Aufrufstelle (direkt oder import) dieser Fehler auftritt, ist voellig unmoeglich.
Hallo,

es kann an allen möglichen gelegen haben. Wie der Fehler zustande gekommen ist, ist mir unbekannt. Komisch fand ich nur das auch Fehler in Modulen ausgelöst wurden, die ja eigentlich fehlerfrei laufen sollten. Intern ging es extern nicht.

Ich arbeite nun weiter an meinem Kopierprogramm.

Bis die Tage...
Antworten