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

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

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

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

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

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:

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

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
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
debian75
User
Beiträge: 90
Registriert: Dienstag 27. November 2007, 01:05

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: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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

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

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:

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