Seite 1 von 1

[GELÖST] Akzente und PyScripter

Veröffentlicht: 15. November 2019 - 11:11 Uhr
von marcolefo
Guten Morgen,

Wir haben ein Problem mit Akzenten.
Tatsächlich werden sie bei der Verwendung von PyScripter nicht korrekt erkannt. In der Python-Konsole gibt es kein Problem.

In der Konsole:

Code: Alle auswählen

Python 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:22:17) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> var = u"éè"
>>> type(var)
<type 'unicode'>
>>> print var
éè
>>>
In der setup.py-Datei über PyScripter:

Code: Alle auswählen

# -*- coding: utf-8 -*-
from setuphelpers import *

uninstallkey = []

def install():
    var = u"éè"
    print type(var)
    print var
Und beim Deinstallieren:

Code: Alle auswählen

*** Console de processus distant Réinitialisée *** 
>>> 
Ligne de Commande : install "C:\TEMP\test-accents_18.7.2-5\WAPT\.."
Using config file: C:\Program Files (x86)\wapt\wapt-get.ini
Installing WAPT files C:\TEMP\test-accents_18.7.2-5
<type 'unicode'>
‚Š

Results :

 === install packages ===
  C:\TEMP\test-accents_18.7.2-5 | test-accents (18.7.2-5)
[Schlechter Witz] Davon verliert man ja die UTF-8-Kodierung! [/Schlechter Witz]

Die Datei setup.py ist in UTF-8 (No BOM) / UNIX gespeichert.

Können Sie erkennen, wo das Problem liegen könnte?

Betreff: Akzente und PyScripter

Veröffentlicht: 15. November 2019 - 12:27 Uhr
von htouvet
Guten Morgen,
Es ist ein altes Problem... das uns nicht mehr schockiert, wir haben uns daran gewöhnt ;)

Tatsächlich wird die Ausgabe der print-Anweisungen umgeleitet, um das Ergebnis in der Wapt-Logdatenbank oder auf der Konsole zu speichern.

Diese Umleitung wird in waptutils.py durch die Klasse LogOutput verwaltet.

Eine Lösung besteht darin, (etwa in Zeile 1455) zu ersetzen

Code: Alle auswählen

    def write(self,txt):
        with self.lock:
            txt = ensure_unicode(txt)
            self.output.append(txt)
            if self.update_status_hook and threading.current_thread() == self.threadid and (time.time()-self.last_update_time>=self.update_buffer_time):
                # wait update_buffer_time before sending data to update_hook to avoid high frequency I/O
                self._send_tail_to_updatehook()

            if self.console:
                try:
                    self.console.write(txt)
                except:
                    self.console.write(repr(txt))

von (self.console.write von self.console.stream.write):

Code: Alle auswählen

    def write(self,txt):
        with self.lock:
            txt = ensure_unicode(txt)
            self.output.append(txt)
            if self.update_status_hook and threading.current_thread() == self.threadid and (time.time()-self.last_update_time>=self.update_buffer_time):
                # wait update_buffer_time before sending data to update_hook to avoid high frequency I/O
                self._send_tail_to_updatehook()

            if self.console:
                try:
                    self.console.stream.write(txt)
                except:
                    self.console.write(repr(txt))

Betreff: Akzente und PyScripter

Veröffentlicht: 15. November 2019 – 13:06 Uhr
von marcolefo
DANKE :)

Damit ist das Problem gelöst...

Eine kurze Frage. Wenn das Problem schon lange bekannt ist, warum wird es dann nicht behoben?

Der von mir bereitgestellte Code war ein Test. In der Realität möchten wir eine Datei löschen, falls sie existiert.

Der Startcode lautet also eher

Code: Alle auswählen

# coding: utf-8
from setuphelpers import *

uninstallkey = []

def install():
    licencemanagerfile = ur'C:\TEMP\test_éè\file.txt'

    if (isfile(licencemanagerfile)):
        remove_file(licencemanagerfile)
Mit der vorgeschlagenen Änderung funktioniert es nun einwandfrei.
Aber das müsste doch für alle Kunden gelten, oder?

Betreff: Akzente und PyScripter

Veröffentlicht: 15. November 2019 – 13:16 Uhr
von htouvet
Eine kurze Frage. Wenn das Problem schon lange bekannt ist, warum wird es dann nicht behoben?
Weil sich niemand darauf konzentriert hatte und wir die Lösung kurz vor Ihrer Antwort gefunden haben...

Die Korrektur wird in der nächsten Version von Wapt enthalten sein... natürlich.

Betreff: Akzente und PyScripter

Veröffentlicht: 18. November 2019 – 15:20 Uhr
von marcolefo
Super! Danke! :)

Betreff: [GELÖST] Akzente und PyScripter

Veröffentlicht: 18. November 2019 - 15:40 Uhr
von htouvet
Es gibt einen Build, der diese Akzentkorrektur enthält:

https://wapt.tranquil.it/wapt/nightly/w ... -1c00cefd/

Changelog:

WAPT-1.7.4-6237 (2019-11-18) (nicht veröffentlicht)
----------------------------

(Hash 1c00cefd)

* waptserver: Korrektur zur Umgehung des Flask-Socketio-Bugs hinzugefügt https://github.com/miguelgrinberg/Flask ... ssues/1054 (AttributeError: 'Request'-Objekt hat kein Attribut 'sid')

* waptserver: Sicherstellen, dass die Datenbank geschlossen ist, bevor versucht wird, sie zu öffnen (für den Entwicklermodus)

* waptserver: Protokollmeldungen hinzugefügt, wenn eine Fehlermeldung an den Benutzer zurückgesendet wird.

WAPT-1.7.4-6234 (2019-11-14) (nicht veröffentlicht)
----------------------------

(Hash ad237eee)

* waptserver: Aktualisierung des Peewee-DB-Python-Moduls auf Version 3.11.2. Explizite Verbindungsbehandlung zur Datenbank, um potenziell inaktive Verbindungen zu erkennen (die zu einer Erschöpfung des Datenbankpools führen könnten).

* waptwua: Abfangen von Ausnahmen beim Hochladen von Windows-Updates in den Windows-Cache, um die Installation gültiger Updates zu ermöglichen, auch wenn einige nicht ordnungsgemäß verifiziert werden konnten.


WAPT-1.7.4-6232 (31.10.2019)
----------------------------

(hash2090b0e6d52cecfb04f8fa4c279e7c0a0252d6e2

) * wapt-get session-setupp: Fehlerhafte Ausgabe in session_setup behoben. Regression eingeführt in b30b1b1a550a4 (1.7.4.6229)

WAPT-1.7.4-6230 (23.10.2019) (nicht veröffentlicht)
----------------------------
(hash 391d382f)

* Server-Git-Hash-Version und -Edition in Ping und usage_statistics zurückgeben

* Server-UUID unter Windows während der Einrichtung

sicherstellen * Korrektur für .git teilweise im Manifest des erstellten Pakets enthalten

Betreff: [GELÖST] Akzente und PyScripter

Veröffentlicht: 27. November 2019 - 17:01 Uhr
von Patrice_minagri
Hallo,

wenn ich das richtig verstehe, geht es dabei darum, den Fix auf allen Computern mit installiertem WAPT-Agenten anzuwenden? Also die ursprüngliche Datei waptutils.py durch die korrigierte Version zu ersetzen (über ein anderes Paket, Gruppenrichtlinie usw.)?