Pregunta

Estoy tratando de mostrar una gran cantidad de texto Unicode en mi solicitud maldiciones. Mi equipo de desarrollo es MacOSX 10.6 y utilizo la pitón estándar entregado con Apple.

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

Cuando añadí texto Unicode a la pantalla, la pantalla todo en mal estado. Traté de Google para la solución y otra gente ha sugerido vincular el módulo _curses con la biblioteca libncursesw en lugar de la biblioteca libncurse.

he comprobado en mi camino y me encontré (ver más abajo) en / opt / local / lib

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

¿Cómo puedo comprobar la biblioteca de mis maldiciones Módulo vinculados a, y cómo puedo vincular contra otra biblioteca? ¿Es posible hacerlo sin recompilación mi Python?


Esto es un poco incómodo, pero calculo la solución para imprimir Unicode correctamente en mi entorno. Creo que en algún punto de tiempo que hice instalar librerías curses de MacPorts y se olvidó que tengo ya.

El problema de que el texto no aparezca la primera vez es porque necesito establecer la configuración regional dentro de mi programa de pitón. Pensé que la configuración local heredaría de la cáscara estoy corriendo, sino simplemente añadido dos líneas de código fijo mi problema:

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

Sin embargo, es bueno saber dónde está el pitón externa vidas biblioteca y cómo comprobar ellos.

¿Fue útil?

Solución

Para comprobar que otra .sos un usos .so, el uso otool -L - por ejemplo:

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

Esto es lo que tengo en mi Python 2.6.4 instalar en OSX 10.5 - Dado que está utilizando Python propia de Apple en 10.6, la ubicación exacta de su _curses.so será diferente, acaba de hacer

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

para ver exactamente donde el _curses.so de interés en, a continuación, llamar otool -L en él.

Sustitución de un .so en el Python instalado sistema parece estar cargada de peligro para mí - que podría Salto de algo y al final tener que volver a instalar el sistema operativo, etc. ¿Por qué no instalar una descarga de Python desde python.org en su lugar?

Get tanto el .dmg y las fuentes para la versión más reciente de 2,6 (a menos que seas tan aventurero quiere probar un candidato versión 2.7 ;-), a continuación, se puede instalar el .dmg (irá a /usr/local, < em> no sobrescribir el sistema Python, establecer su PATH apropiadamente en su .bashrc o donde quiera tener /usr/local/bin en su camino delante de /usr/bin), entonces, si sus persiste problema, puede reconstruir a partir de fuentes con cualquiera de las opciones que desea, y sustituir el _curses.so específico en la instalación local, sin perturbar el directorio del sistema en absoluto (parece más prudente para mí ...).

Otros consejos

El pitón suministrado por Apple 2.6 se incluye con OS X 10.6 reside aquí:

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

Sería una muy mala idea para tratar de modificar nada en /System/Library ya que ello podría romper OS X y / o ser eliminados por una actualización del sistema. Si necesita volver a vincular, construir su propio Python desde cero o comenzar con Homebrew , DarwinPorts , o Fink .

EDIT:

Parece ser que el actual MacPorts Python 2.6 instalar usos libncursesw lo que la instalación puede ser la solución más simple:

$ 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)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top