Domanda

Sto cercando di visualizzare un sacco di testo Unicode nella mia applicazione maledizioni. La mia macchina di sviluppo è MacOSX 10.6 e io uso il pitone di default fornito con Apple.

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

Quando ho aggiunto il testo Unicode allo schermo, lo schermo tutto incasinato. Ho cercato di Google per soluzione e le altre persone ha suggerito per collegare il modulo di _curses con biblioteca libncursesw invece di libreria libncurse.

ho controllato il mio percorso e ho trovato (vedi sotto) in / opt / local / lib

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

Come posso controllare quale libreria mie maledizioni modulo legato al, e come posso collegare contro altra libreria? E 'possibile farlo senza ricompilare il mio Python?


Questa è una specie di imbarazzo, ma immagino che la soluzione per stampare correttamente unicode nel mio ambiente. Penso che a un certo momento punto ho fatto installare maledizioni librerie da MacPorts e dimenticato ce l'ho già.

Il problema che il testo non visualizzava la prima volta che è perché ho bisogno di impostare il locale all'interno del mio programma Python. Ho pensato alle impostazioni locali avrebbe ereditato dal guscio Io corro, ma semplicemente aggiunto due righe di codice fisso il mio problema:

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

Anche se, è bene sapere dove il pitone esterno della biblioteca vita e come controllarli.

È stato utile?

Soluzione

Per verificare quali altre .sos un uso .so, uso otool -L - ad esempio:

$ 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)

Questo è quello che ho sul mio Python 2.6.4 installato su OSX 10.5 - dal momento che si sta utilizzando proprio Python di Apple sul 10,6, la posizione esatta del vostro _curses.so sarà diverso, basta fare

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

per vedere esattamente dove il _curses.so di interesse, quindi chiamare otool -L su di esso.

Sostituzione di un .so sul Python installato sistema sembra pieno di pericoli per me - potrebbe rompere qualcosa e finiscono per dover reinstallare il sistema operativo, ecc Perché non installare un download Python da python.org invece?

ottiene sia il .dmg e le fonti per il recente rilascio più di 2,6 (a meno che non sei così avventurosi si vuole provare una release candidate 2.7 ;-), allora si può installare il .dmg (andrà a /usr/local, < em> non di sovrascrivere il sistema di Python; impostare il PATH in modo appropriato nel vostro .bashrc o dovunque per avere /usr/local/bin nel PATH prima del /usr/bin), poi, se il problema persiste, è possibile ricostruire da fonti con qualunque opzioni desiderate, e sostituire il _curses.so specifico nella installazione locale, senza disturbare la directory di sistema a tutti (sembra più prudente, a me ...).

Altri suggerimenti

L'Apple-fornito Python 2.6 fornito con OS X 10.6 risiede qui:

$ 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)

Sarebbe una pessima idea di tentare di modificare qualcosa in /System/Library in quanto ciò potrebbe rompere OS X e / o di essere spazzato via da un aggiornamento del sistema. Se avete bisogno di ricollegare, costruire il proprio Python da zero o iniziare con Homebrew , MacPorts , o Fink .

EDIT:

Sembra che il MacPorts corrente Python 2.6 installare usi libncursesw così l'installazione può essere la soluzione più semplice:

$ 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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top