pyinstaller, cx_freeze unicode???

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.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi DatenMetzgerX!

Bitte unter Linux ausprobieren. Dieses Beispiel wird wahrscheinlich so nicht unter Windows funktionieren. Aber wenn es unter Linux funktioniert, dann sehe ich eine Lösung:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

# Achte auf das Coding. Das muss mit dem wirklichen Dateicoding zusammenpassen.

import sys
import encodings
import encodings.ascii
import encodings.utf_8
import encodings.iso8859_1
import encodings.iso8859_15
import encodings.mbcs
import encodings.cp850
import codecs

 
# Encodings
out_enc = "iso-8859-1"
err_enc = "iso-8859-1"
in_enc = "iso-8859-1"

# StdOut und StdErr umleiten -> Streamwriter mit korrektem Encoding
sys.stdout = codecs.getwriter(out_enc)(sys.__stdout__)
sys.stderr = codecs.getwriter(out_enc)(sys.__stderr__)
sys.stdin = codecs.getreader(in_enc)(sys.__stdin__) 


def Generate(self, event):
    """Verkleinert die eigentlichen Bilder"""
    
    if not resize.isEmpty(self.txtFolder.GetValue()) and not ( resize.isEmpty(self.txtHeight.GetValue()) and resize.isEmpty(self.txtWidth.GetValue()) and not resize.isEmpty(self.txtDestination.GetValue()) ):
        self.Enable(False)
        maximum = count(self.txtFolder.GetValue(), self)
        progress = wx.ProgressDialog("Status", u"Dateien werden gezählt", maximum,parent = self, style = wx.PD_AUTO_HIDE | wx.PD_CAN_ABORT | wx.PD_ELAPSED_TIME | wx.PD_REMAINING_TIME)
        #self.Status.Destroy()
        progress.Update(0, "Dateien werde umgeformt")
        wildcard = (".jpg", ".png", ".jpeg", ".gif", ".bmp")
        
        if resize.isEmpty(self.txtHeight.GetValue()):
            height = 0
            width = int(self.txtWidth.GetValue())
        elif resize.isEmpty(self.txtWidth.GetValue()):
            width = 0
            height = int(self.txtHeight.GetValue())
        else:
            height = int(self.txtHeight.GetValue())
            width = int(self.txtWidth.GetValue())
        
        lCounter = 0
        exit = True
        for dir, dirs, files in os.walk(self.txtFolder.GetValue()):
            subdir = string.split(dir, self.txtFolder.GetValue())[-1]
            for file in files:
                ...
                ...
                ...
lg
Gerold
:-)

Edit: Ich habe STDIN vergessen. (ungetestet)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

PS: Mehr fällt mir im Moment nicht dazu ein. Dazu müsste ich mehr Zeit haben.

Vielleicht fällt denen in der cx_Freeze-Mailinglist mehr dazu ein.

Zumindest eins wissen wir aus unseren Tests.
Unter Linux bekommen wir bei einem gefreezten Programm kein Ergebnis auf sys.stdin.encoding, sys.stdout.encoding und sys.getfilesystemencoding()

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

So hatte auch wiedermal Zeit :roll:

Code: Alles auswählen

  File "/home/micha/Desktop/cx_Freeze-3.0.2/initscripts/Console.py", line 26, in ?
    exec code in m.__dict__
  File "../../image resizer/main.py", line 28, in ?
    sys.stdout = codecs.getwriter(out_enc)(sys.__stdout__)
  File "/usr/lib/python2.4/codecs.py", line 752, in getwriter
    return lookup(encoding)[3]
LookupError: unknown encoding: iso-8859-1
hmmm...Kennt das Encoding nicht :(
Auf Coding beim Speichern geachtet :)
Antworten