cheetah compile: UnicodeDecodeError: 'ascii' codec can't dec

Django, Flask, Bottle, WSGI, CGI…
Antworten
debian75
User
Beiträge: 90
Registriert: Dienstag 27. November 2007, 01:05

Donnerstag 15. Juli 2010, 23:38

hallo leute

bekomme oben genannten error, wenn ich eine name.tmpl datei compilen will. cheetah version ist 2.4.2.

kann mir jemand sagen wie ich das weg bekomme?

grüsse

d
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Freitag 16. Juli 2010, 02:14

Vorbildlicher Thread:

Fängt beim Titel an und hört bei deinem Gruß auf.

Ein wenig mehr Info wäre doch schon angebracht.

G
a
debian75
User
Beiträge: 90
Registriert: Dienstag 27. November 2007, 01:05

Freitag 16. Juli 2010, 07:15

Hmm..was fehlt denn an info? Hier das komplette log:

$ cheetah compile -R
Drilling down recursively from current directory.
Compiling hauptvorlage.tmpl -> hauptvorlage.py
/home/debian75/lib/python2.5/Cheetah-2.4.2.1-py2.5-linux-i686.egg/Cheetah/Compiler.py:1509: UserWarning:
You don't have the C version of NameMapper installed! I'm disabling Cheetah's useStackFrames option as it is painfully slow with the Python version of NameMapper. You should get a copy of Cheetah with the compiled C version of NameMapper.
"\nYou don't have the C version of NameMapper installed! "
Traceback (most recent call last):
File "/home/debian75/bin/cheetah", line 5, in <module>
pkg_resources.run_script('Cheetah==2.4.2.1', 'cheetah')
File "/usr/local/lib/python2.5/site-packages/pkg_resources.py", line 448, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/local/lib/python2.5/site-packages/pkg_resources.py", line 1166, in run_script
execfile(script_filename, namespace, namespace)
File "/home/debian75/lib/python2.5/Cheetah-2.4.2.1-py2.5-linux-i686.egg/EGG-INFO/scripts/cheetah", line 3, in <module>
_cheetah()
File "/home/debian75/lib/python2.5/Cheetah-2.4.2.1-py2.5-linux-i686.egg/Cheetah/CheetahWrapper.py", line 620, in _cheetah
CheetahWrapper().main()
File "/home/debian75/lib/python2.5/Cheetah-2.4.2.1-py2.5-linux-i686.egg/Cheetah/CheetahWrapper.py", line 148, in main
meth()
File "/home/debian75/lib/python2.5/Cheetah-2.4.2.1-py2.5-linux-i686.egg/Cheetah/CheetahWrapper.py", line 231, in compile
self._compileOrFill()
File "/home/debian75/lib/python2.5/Cheetah-2.4.2.1-py2.5-linux-i686.egg/Cheetah/CheetahWrapper.py", line 380, in _compileOrFill
self._compileOrFillBundle(b)
File "/home/debian75/lib/python2.5/Cheetah-2.4.2.1-py2.5-linux-i686.egg/Cheetah/CheetahWrapper.py", line 596, in _compileOrFillBundle
compilerSettings=compilerSettings)
File "/home/debian75/lib/python2.5/Cheetah-2.4.2.1-py2.5-linux-i686.egg/Cheetah/Template.py", line 740, in compile
settings=(compilerSettings or {}))
File "/home/debian75/lib/python2.5/Cheetah-2.4.2.1-py2.5-linux-i686.egg/Cheetah/Compiler.py", line 1575, in __init__
source = unicode(source)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)
marlob
User
Beiträge: 51
Registriert: Mittwoch 23. August 2006, 20:13

Freitag 16. Juli 2010, 08:09

So ein Problem hattest du vor 3 Jahren auch schon mal.
http://www.python-forum.de/viewtopic.ph ... ah+unicode
Haben dir die Hinweise dort nicht geholfen?
gruss
marlob
-------------------------------------
Linux Mint 17 + Python 2.7.6
debian75
User
Beiträge: 90
Registriert: Dienstag 27. November 2007, 01:05

Freitag 16. Juli 2010, 09:55

wow, was für ein erinnerungsvermögen :) ich muss mir das mal wieder durchlese, weil ich habe seitdem nichts mehr gross gemacht mit python. diesmal habe ich das problem aber schon beim compilieren des templates...war damals anders glaubs.

danke :)
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Freitag 16. Juli 2010, 15:54

Muss es denn Cheetah sein? Das Ding ist schmerzhaft.
TUFKAB – the user formerly known as blackbird
marlob
User
Beiträge: 51
Registriert: Mittwoch 23. August 2006, 20:13

Freitag 16. Juli 2010, 19:10

mitsuhiko hat geschrieben:Muss es denn Cheetah sein? Das Ding ist schmerzhaft.
Was bevorzugst du denn?
gruss
marlob
-------------------------------------
Linux Mint 17 + Python 2.7.6
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 16. Juli 2010, 19:42

Jinja2, seine eigene Template Engine. Und meinen Erfahrungen mit Cheetah und Jinja2 zu folgen - zu recht.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
debian75
User
Beiträge: 90
Registriert: Dienstag 27. November 2007, 01:05

Freitag 16. Juli 2010, 23:32

muss nicht cheetah sein, nur kenne ich das halt ein ganz kleines bisschen. meine projekte sind nicht gross genug als dass ich auf die template engine wert legen müsste...ist relativ egal was ich nehme, ich denke da kann ich mit cheetah nichts falsch machen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7477
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Samstag 17. Juli 2010, 09:10

debian75 hat geschrieben:... ich denke da kann ich mit cheetah nichts falsch machen.
Anscheinend ja nun schon ;-)

Ob klein oder nicht, ich würde mir jinja2 definitiv mal ansehen und da einen kleinen Mehraufwand in Kauf nehmen. Imho lohnt sich das auf Dauer.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Samstag 17. Juli 2010, 09:50

Der Fehler lässt sich z.B. so reproduzieren:

Code: Alles auswählen

str(u"€")
Du (oder Cheetah) versuchst einen Unicode-String, der ein Zeichen außerhalb des ASCII-Bereichs (Codepoint 0 bis 127) enthält, in einen Bytestring zu verwandeln. Das geht schief. Finde und vermeide diesen Unicode-String.

Stefan
marlob
User
Beiträge: 51
Registriert: Mittwoch 23. August 2006, 20:13

Montag 19. Juli 2010, 06:50

mitsuhiko hat geschrieben:Muss es denn Cheetah sein? Das Ding ist schmerzhaft.
Werde, nach Hinweis von Leonidas, auch mal Jinja2 ausprobieren :D
Nach lesen der Doku hört es sich auf jeden Fall nach einer interessanten Alternative an.
Mich würde aber interessieren wo "Das Ding" deiner Meinung (oder auch von anderen) nach schmerzhaft ist?

Ich arbeite in der Automatisierungsbranche und benutze Python + Cheetah um aus meinen gegebenen Kundendaten (die in Excel, XML, csv oder Datenbanken vorliegen) die entsprechende Symbolik, Code für die Steuerung, Dokumentation und Testlisten zu erzeugen. Was mit Cheetah bisher ganz gut funktioniert.
Mich würde aber trotzdem die "schmerzhaften Stellen" interessieren um nicht später mal gegen unlösbare Probleme zu laufen.
gruss
marlob
-------------------------------------
Linux Mint 17 + Python 2.7.6
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Montag 19. Juli 2010, 08:15

Variablen werden bei Cheetah auf das Template gebunden und nicht auf einen Context, wie bei anderen Template engines. Damit ist es eine nicht triviale Augabe das ganze Ding threadsafe zu machen.
TUFKAB – the user formerly known as blackbird
Antworten