Frage

Ich versuche, in meiner Flüche Anwendung viel Unicode-Text angezeigt werden soll. Meine Entwicklungsmaschine ist MacOSx 10.6 und ich verwende den Standard-Python mit Apple ausgeliefert.

Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin

Wenn ich Unicode-Text auf dem Bildschirm hinzugefügt, die alle auf dem Bildschirm durcheinander. Ich habe versucht, Google für Lösung und andere Leute vorgeschlagen hat das _curses Modul mit libncursesw Bibliothek zu verknüpfen statt libncurse Bibliothek.

checkte ich meinen Weg und ich fand (siehe unten) in / opt / local / lib

libncurses++.a
libncurses++w.a
libncurses.5.dylib
libncurses.a
libncurses.dylib
libncursesw.5.dylib
libncursesw.a
libncursesw.dylib

Wie kann ich überprüfen, welche Bibliothek meine Flüche verknüpft Modul, und wie kann ich einen Link gegen andere Bibliothek? Ist es möglich, es zu tun, ohne neu zu kompilieren mein Python?


Dies ist eine Art von peinlich, aber ich glaube die Lösung richtig in meiner Umgebung drucken Unicode. Ich denke, irgendwann, wenn ich Flüche Bibliotheken von Macports installiert haben und vergessen, ich habe es schon.

Das Problem, dass der Text nicht das erste Mal angezeigt hat, weil ich das Gebietsschema in meinem Python-Programm einstellen muß. Ich dachte, die Lokalisierungs-Einstellungen von der Shell erben würde ich laufen, sondern nur zwei Zeilen Code fixiert mein Problem hinzugefügt:

import locale
locale.setlocale(locale.LC_ALL,"")

Obwohl, es ist gut zu wissen, wo die Python externe Bibliothek lebt und wie sie zu überprüfen.

War es hilfreich?

Lösung

Um zu überprüfen, welche andere .sos eine .so Anwendungen, Verwendung otool -L - zum Beispiel:

$ otool -L /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_curses.so
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_curses.so:
    /Library/Frameworks/Python.framework/Versions/2.6/lib/libncurses.5.dylib (compatibility version 5.0.0, current version 5.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.3.10)

Dies ist, was ich auf meinem Python 2.6.4 installieren auf OSX 10.5 - da Sie verwenden eigenen Python Apple auf 10.6, wird die genaue Position Ihres _curses.so anders sein, nur tun

$ python
>>> import _curses
>>> _curses.__file__

, um zu sehen, wo genau die _curses.so von Interesse, dann otool -L auf es nennen.

einen .so auf dem System installierten Python Austausch scheint mit Gefahr für mich voll - Sie könnte Pause etwas und am Ende mit dem Betriebssystem neu zu installieren, usw. Warum nicht einen Python-Download von python.org installieren stattdessen?

Get sowohl die .dmg und die Quellen für die neueste Version von 2,6 (es sei denn, Sie so abenteuerlich bist du ein Release Candidate 2.7 versuchen wollen ;-), dann können Sie die .dmg installieren (es /usr/local gehen, < em> nicht , um das System Python zu überschreiben, geben Sie Ihre PATH entsprechend in Ihrem .bashrc oder wo auch immer /usr/local/bin in Ihrer PATH vor /usr/bin haben), dann, wenn das Problem weiterhin besteht, können Sie aus den Quellen mit beliebigen Optionen umbauen Sie mögen, und ersetzen Sie die spezifischen _curses.so im lokalen installieren, ohne das Systemverzeichnis überhaupt zu stören (scheint klügste mir ...).

Andere Tipps

Der von Apple bereitgestellten Python 2.6 ausgeliefert mit OS X 10.6 wohnt hier:

$ cd /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload
$ otool -L _curses*
_curses.so:
    /usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.0.1)
_curses_panel.so:
    /usr/lib/libpanel.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
    /usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.0.1)

Es wäre eine sehr schlechte Idee zu versuchen, etwas in /System/Library zu modifizieren, wie das OS X brechen könnte und / oder werden durch ein System-Update aufgerieben. Wenn Sie neu verknüpfen müssen, bauen Sie Ihre eigenen Python von Grund auf neu oder starten Sie mit Homebrew , MacPorts oder Fink .

EDIT:

Es scheint, dass der aktuelle MacPorts Python 2.6 installieren Anwendungen libncursesw so die Installation kann es die einfachste Lösung sein:

$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/
$ otool -L _curses*
_curses.so:
    /opt/local/lib/libncursesw.5.dylib (compatibility version 5.0.0, current version 5.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)
_curses_panel.so:
    /opt/local/lib/libpanelw.5.dylib (compatibility version 5.0.0, current version 5.0.0)
    /opt/local/lib/libncursesw.5.dylib (compatibility version 5.0.0, current version 5.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top