Seite 1 von 1

Merkwürdige Fehlermeldung

Verfasst: Donnerstag 22. Dezember 2011, 11:28
von Ingo
Hallo zusammen,
ich hoffe jemand kann mir helfen.
Ich arbeite mit Python 2.5

Ich habe ein Hauptprogramm Main().
In diesem Main importiere ich ein Modul, das zwei Funktionen enthält.
Die erste Funktion übergibt eine Variable der zweiten Funktion.
Wenn ich das Modul mit den beiden Funktionen laufen lasse funktioniert alles.
Wenn ich aber das alles über das Hauptprogramm laufen lasse bekomme ich folgende Fehlermeldung:

Traceback (most recent call last):
File "C:\Program Files\Common Files\dSPACE\Python25\lib\site-packages\Pythonwin\pywin\framework\scriptutils.py", line 307, in RunScript
debugger.run(codeObject, __main__.__dict__, start_stepping=0)
File "C:\Program Files\Common Files\dSPACE\Python25\lib\site-packages\Pythonwin\pywin\debugger\__init__.py", line 60, in run
_GetCurrentDebugger().run(cmd, globals,locals, start_stepping)
File "C:\Program Files\Common Files\dSPACE\Python25\lib\site-packages\Pythonwin\pywin\debugger\debugger.py", line 631, in run
exec cmd in globals, locals
File "C:\Datensicherung\Python_Schulung\Uebung\Main.py", line 19, in <module>
main()
File "C:\Datensicherung\Python_Schulung\Uebung\Main.py", line 13, in main
import Paket.Comm
File "C:\Datensicherung\Python_Schulung\Uebung\Paket\Comm.py", line 327
SyntaxError: Non-ASCII character '\xfc' in file C:\Datensicherung\Python_Schulung\Uebung\Paket\Comm.py on line 327, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details (Comm.py, line 327)

Re: Merkwürdige Fehlermeldung

Verfasst: Donnerstag 22. Dezember 2011, 11:34
von /me
Ingo hat geschrieben:

Code: Alles auswählen

  File "C:\Datensicherung\Python_Schulung\Uebung\Paket\Comm.py", line 327
 SyntaxError: Non-ASCII character '\xfc' in file C:\Datensicherung\Python_Schulung\Uebung\Paket\Comm.py on line 327, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details (Comm.py, line 327)
Wie sieht Zeile 327 in Comm.py denn aus? Das schreit danach, dass Umlaüte verwendet wurden aber kein Source Code Encoding angegeben wurde.

Re: Merkwürdige Fehlermeldung

Verfasst: Donnerstag 22. Dezember 2011, 11:39
von 0x1cedd1ce
ein

Code: Alles auswählen

# coding=utf8
in der ersten oder zweiten Zeile der Datei könnte das Problem beheben

Re: Merkwürdige Fehlermeldung

Verfasst: Donnerstag 22. Dezember 2011, 11:44
von /me
0x1cedd1ce hat geschrieben:

Code: Alles auswählen

# coding=utf8
in der ersten oder zweiten Zeile der Datei könnte das Problem beheben
Natürlich sollte man dann die Datei auch wirklich mit UTF-8-Kodierung abspeichern.

Der Hintergrund zu dieser Lösung stand ja bereits in der Fehlermeldung: PEP-263.

Re: Merkwürdige Fehlermeldung

Verfasst: Donnerstag 22. Dezember 2011, 11:54
von Ingo
Danke Danke es lag wirklich an den Umlauten in den Kommentaren. Das hatte ich Total vergessen.
man soll ja keine Umlaute verwenden auch nicht in den Kommentaren.
Danke noch mal für die Schnelle Rückmeldung

Re: Merkwürdige Fehlermeldung

Verfasst: Donnerstag 22. Dezember 2011, 13:01
von Hyperion
Ingo hat geschrieben: man soll ja keine Umlaute verwenden auch nicht in den Kommentaren.
Wenn man Englisch schreibt, ist das idR. kein Problem. Allerdings würde ich das nicht so extrem sehen. Vor allem brauchst Du die Encoding Angabe auch dann, wenn Du Strings in Deinem Programm anlegst, die Umlaute enthalten.

Re: Merkwürdige Fehlermeldung

Verfasst: Donnerstag 22. Dezember 2011, 18:09
von Dav1d
0x1cedd1ce hat geschrieben:ein

Code: Alles auswählen

# coding=utf8
in der ersten oder zweiten Zeile der Datei könnte das Problem beheben
Python sucht doch in allen Kommentaren nach "coding: ...", oder irre ich mich da? (Nur das Shebang ist auf die erste Zeile festgelegt)

Re: Merkwürdige Fehlermeldung

Verfasst: Donnerstag 22. Dezember 2011, 19:29
von /me
Dav1d hat geschrieben:Python sucht doch in allen Kommentaren nach "coding: ...", oder irre ich mich da? (Nur das Shebang ist auf die erste Zeile festgelegt)
Ich zitiere PEP-263:
"To define a source code encoding, a magic comment must be placed into the source files either as first or second line in the file [...]"

Ein kleines Schmankerl dazu (lauffähig unter Python 2.x)

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: rot13 -*-
cevag 'Unyyb Clguba-Sbehz!'.rapbqr('rot13')
Ja, das geht.