Question

Je suis en train d'afficher beaucoup de texte unicode dans ma demande de malédictions. Ma machine de développement est MacOSX 10.6 et j'utilise le python par défaut livré avec Apple.

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

Quand j'ai ajouté du texte unicode à l'écran, l'écran tout foiré. J'ai essayé de Google pour la solution et d'autres personnes a suggéré de relier le module _curses avec bibliothèque libncursesw au lieu de la bibliothèque libncurse.

J'ai vérifié mon chemin et j'ai trouvé (voir ci-dessous) dans / opt / local / lib

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

Comment puis-je vérifier quelle bibliothèque mes malédictions module lié, et comment puis-je établir un lien avec d'autres bibliothèques? Est-il possible de le faire sans recompilation mon Python?


est un peu gêné, mais je figure la solution pour imprimer unicode correctement dans mon environnement. Je pense à un moment donné de point que je l'ai fait installer des bibliothèques de malédictions de Macports et oublié que je l'ai déjà.

Le problème que le texte n'a pas afficher la première fois est parce que je dois définir les paramètres régionaux dans mon programme Python. Je pensais que la configuration locale hérite de la coquille je en cours d'exécution, mais simplement ajouté deux lignes de code fixe mon problème:

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

Bien, il est bon de savoir où la vie de la bibliothèque externe de python et comment les vérifier.

Était-ce utile?

La solution

Pour vérifier quels autres utilisations .sos une .so, l'utilisation otool -L - par exemple:

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

est ce que j'ai sur mon Python 2.6.4 installer sur Mac OS X 10.5 - puisque vous utilisez Python propre d'Apple sur 10.6, l'emplacement exact de votre _curses.so sera différent, il suffit de faire

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

pour voir exactement où le _curses.so d'intérêt, puis appelez otool -L dessus.

Remplacement d'un .so sur le système Python installé semble lourde de danger pour moi - vous peut casser quelque chose et finissent par avoir à réinstaller le système d'exploitation, etc. Pourquoi ne pas installer un téléchargement Python de python.org à la place?

Obtenir la fois .dmg et les sources pour la version la plus récente de 2,6 (sauf si vous êtes aventureux vous voulez essayer un candidat de libération ;-) 2.7, vous pouvez installer le .dmg (il ira à /usr/local, < em> pas en remplaçant le système Python, définissez votre PATH correctement dans votre .bashrc ou chaque fois que d'avoir /usr/local/bin dans votre PATH avant /usr/bin), puis, si votre persiste problème, vous pouvez reconstruire à partir de sources avec les options que vous voulez, et remplacer le _curses.so spécifique dans l'installation locale, sans perturber le répertoire système du tout (me semble plus prudent de ...).

Autres conseils

Le Python fournie par Apple 2.6 livré avec OS X 10.6 réside ici:

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

Ce serait une très mauvaise idée d'essayer de modifier quoi que ce soit dans /System/Library car cela pourrait briser OS X et / ou être effacé par une mise à jour du système. Si vous devez réassocier, construire votre propre Python à partir de zéro ou commencer par Homebrew , MacPorts , ou Fink .

EDIT:

Il semble que le MacPorts actuel Python 2.6 installer utilisations libncursesw donc l'installation peut être la solution la plus 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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top