Merkwürdige Fehlermeldung

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
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

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)
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
0x1cedd1ce
User
Beiträge: 31
Registriert: Sonntag 3. Oktober 2010, 12:21

ein

Code: Alles auswählen

# coding=utf8
in der ersten oder zweiten Zeile der Datei könnte das Problem beheben
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
Ingo
User
Beiträge: 59
Registriert: Dienstag 21. Oktober 2008, 09:51

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
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

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)
the more they change the more they stay the same
Benutzeravatar
/me
User
Beiträge: 3556
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
Antworten