image image


Atom, Visual Studio Code, Python 3 und UTF-8

Dank der Hilfe der Cloud in meinen (Email-) Kommentaren bin ich mit meinem Problem mit den beiden Editoren Atom und Visual Studio Code, Python 3 und UTF-8 ein wenig weitergekommen. Die benötigten Plugins Script für Atom wie auch Code Runner für Visual Studio Code scheinen den gleichen Bug zu haben:

image

image

Fragt man nämlich mit print(sys.stdout.encoding) nach dem Encoding in stdout erhält man in beiden Fällen als Antwort US-ASCII. Läßt man hingegen das Script im Terminal laufen, ist die Antwort UTF-8. Das wäre das gewünschte Verhalten.

Für Atom habe ich zumindest ansatzweise eine Lösung/einen Workaround gefunden: Im Menü Packages -> Script -> Configure Script kann man die Run Options konfigurieren und unter Environment Variables PYTHONIOENCODING="utf-8" eingeben. Dann klappt das auch mit dem Skript und dem Umlaut in meinem Vornamen:

image

Nur … meine Quelle verrät leider nicht, wie ich diese Änderung persistent bekomme. Nach einem Neustart des Editors ist alles wieder vergessen und ich darf diese auf Dauer doch recht umständliche Prozedur wiederholen.

Da das bisher mit der Weisheit der Cloud so gut geklappt hat, hier nun meine neuen Fragen:

  1. Wie bekomme ich die Änderung in der Konfiguration von Script so gespeichert, daß sie dauerhaft zur Verfügung steht?
  2. Wie bringe ich diese Änderung der Umgebungsvariablen dem Code Runner von Visual Studio Code bei – natürlich ebenfalls dauerhaft?

Ich zähle auf Euch und bedanke mich schon einmal bei allen, die mir bis hierhin weitergeholfen haben.


5 (Email-) Kommentare


»Fragt man nämlich mit print(sys.stdout.encoding) nach dem Encoding in stdout erhält man in beiden Fällen als Antwort US-ASCII. Läßt man hingegen das Script im Terminal laufen, ist die Antwort UTF-8. Das wäre das gewünschte Verhalten.«
Im Terminal hat man eine interaktive Shell, d.h. es wird ~/.bashrc ausgeführt. In einer nichtinteraktiven Shell (z.B. wenn aus Atom heraus der Python-Interpreter aufgerufen wird) wird hingegen ~/.bash_profile ausgeführt. Daher gehört
export LC_ALL=en_US.UTF-8
export LANG="$LC_ALL"
zusätzlich in die ~/.bash_profile. In der ~/.bashrc scheint das schon zu stehen (direkt oder indirekt).
Das Problem ist nicht python-spezifisch, sondern ein Problem des Shell-Environments. In der interaktiven Shell können Sie sich mit
locale
das Enviroment ansehen.
Im Python-Skript macht die Zeile
os.system("locale")
dasselbe. Die Ausgaben in beiden Fällen dürften sich erheblich unterscheiden.

– Ralf P. (Kommentieren) (#)


Danke, das hat das Problem gelöst. Ehrlich gesagt wußte ich bisher gar nicht, daß eine ~/.bash_profile existiert. Als ich sie in meinen Editor lud, hatte da bisher auch nur der Anaconda-Installer etwas hineingeschrieben.
Eine ~/.bashrc scheint meine Shell allerdings nicht zu kennen. Wahrscheinlich kommen da die Informationen tatsächlich indirekt in die interaktive Shell – wer weiß, was Anaconda da im Hintergrund gebastelt hat.

– Jörg Kantel (Kommentieren) (#)


»Eine ~/.bashrc scheint meine Shell allerdings nicht zu kennen.«
Dann greifen die Einstellungen von Terminal.app (siehe Screenshot): image
»Ehrlich gesagt wußte ich bisher gar nicht, daß eine ~/.bash_profile existiert. Als ich sie in meinen Editor lud, hatte da bisher auch nur der Anaconda-Installer etwas hineingeschrieben. Wahrscheinlich kommen da die Informationen tatsächlich indirekt in die interaktive Shell – wer weiß, was Anaconda da im Hintergrund gebastelt hat.«
Anaconda bastelt gar nichts. Das einzige was der Anaconda-Installer macht, ist in die ~/.bash_profile zu schreiben. Das erzählt er einem auch am Ende des Installationsvorganges und man kann es auch unterbinden.

– Ralf P. (Kommentieren) (#)


Da habe ich alter Mann ja wieder einiges dazugelernt. Danke!

– Jörg Kantel (Kommentieren) (#)


Hi, mein python 2.7 Compiler unter linux verweist mich auf pep-263: https://www.python.org/dev/peps/pep-0263/

– Matthias S. (Kommentieren) (#)


(Kommentieren) 

image image



Über …

Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!

Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.

Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.

Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.


Werbung


Werbung


image  image  image
image  image  image


image