image image


Worknote (und Thread): TextMate mit Python 2 und Python 3 (und UTF-8)

Hier hatte ich berichtet, wie ich ein funktionierendes PyGame unter einem (virtuellen) (Anaconda-) Python 2.7 zu einem korrekten Arbeiten bewegen konnte. Offen blieb nur noch, wie ich meinem Editor TextMate 2 überreden kann, mit Command-R das »richtige« Python aufzurufen, ohne den mühsamen Umweg über das Terminal gehen zu müssen. Mittlerweile habe ich eine (halbwegs befriedigende) Lösung gefunden. Es ist eigentlich genau so, wie hier beschrieben. Schwierig, war eigentlich nur, den richtigen Pfad zum (virtuellen) Python 2.7 zu finden. In meinem Fall ist es

/Users/admin/anaconda/envs/python2/bin/python2.7

Wenn ich diesen Pfad nun als Python-Pfad TM_PYTHON in den TextMate-Preferenzen eintrage und per Häkchen aktiviere (Screenshot),

image

dann wird mit Command-R tatsächlich die virtuelle Umgebung mit dem Python 2.7 aufgerufen. Man darf natürlich bei Bedarf nicht vergessen, das Häkchen wieder auf die Python-3-Umgebung zurückzusetzen, wenn man diese wieder nutzen will (beide Umgebungen gleichzeitig zu aktivieren, führt ins Unglück 😈 ).

Ist das Anaconda-Python 2.7 UTF-8-fest?

image

Schaut man sich obigen Screenshot an, stellt man (zumindest stellte ich) etwas Verwirrendes fest. Da ich nun schon einige Zeit außerhalb von Processing.py fast ausschließlich mit Python 3 hantiere, hatte ich in Zeile 9 statt

    pygame.display.set_caption(u"Hallo Jörg! 😇 ")

nur

    pygame.display.set_caption("Hallo Jörg! 😇 ")

eingetippt, also die eigentlich unter Python 2.7 notwendige Kennzeichnung als UTF-8-String vergessen. Dennoch lief das Progrämmchen ohne Probleme. Ich weiß noch nicht, ob das eine Nebenwirkung diverser Hacks in meinen diversen Python-Implementierungen (ich habe da unter anderem Karsten Wolfs NodeBox 1 im Verdacht) oder ob das ein allgemeingültiges Verhalten ist. Wenn das jemand auf seinem Rechner verifizieren könnte und mir eine Nachricht in meinen (Email-) Kommentaren hinterläßt, wäre ich ihm sehr dankbar.

Still digging!


2 (Email-) Kommentare


I wash my hands in innocence.
NodeBox1 (zumindest mein Fork) ist ein eigenständiges Programm mit eigenem Python Interpreter und eigenen Bibliotheken. Das System oder sonstige installierte Pythons werden nicht benutzt oder beeinflusst.
Der Kniff funktioniert, weil in der 1. Zeile: # -*- coding: utf-8 -*- steht und pygame.display.set_caption() einen bytestring akzeptiert und ausserdem in der Lage ist, diesen korrekt zu konvertieren. Probiere das mal mit "macroman" oder "latin" in der "coding:" Zeile.
P.S.: Die "UTF-8 Kennzeichnung" gibt es (leider) nicht. Die "coding:" Zeile sorgt nur dafür, daß "Hallo Jörg" nach dem parsen im Speicher als UTF-8 kodierter String vorliegt; eine Funktion, der dieser String übergeben wird, hat keine Möglichkeit, die Kodierung nachzuschauen.
In Python 2 erzeugt das u"" einen Unicode String und "" einen Bytestring. Letzterer kann utf-8 oder ascii oder macroman oder sonstwie kodiert sein. Der Unicode String jedoch nicht.

– Karsten Wolf (Kommentieren) (#)


Schade eigentlich. Ich hatte so etwas schon vermutet, aber irgendwie im Stillen gehofft, daß Du einen genialen Kniff gefunden hast. 😝 Aber egal, zumindest läuft PyGame wieder bei mir. Ob ich damit etwas anstellen werde, weiß ich noch nicht, aber es hatte mich einfach geärgert, daß es bei mir nicht mehr lief …

– Jörg Kantel (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