iTerm2, unicode y sympy

En mi máquina Mac (OS X Mavericks) y Ubuntu, instalé Sympy, que es una biblioteca de Python para matemáticas simbólicas. Parte de sympyesto es la bonita función de impresión que utiliza caracteres Unicode para embellecer las expresiones simbólicas en los entornos de línea de comandos compatibles con Unicode. Por ejemplo, en mi máquina Ubuntu y gnome-terminalejecutando el siguiente código

from sympy import *
x = Symbol("x")
pprint(Integral(sqrt(1/x), x)) 

rinde a

ingrese la descripción de la imagen aquí

Sin embargo, el mismo comando en OS X con iTerm2 (que debería ser compatible con Unicode) da como resultado

ingrese la descripción de la imagen aquí

Estoy usando sympy 0.7.5lo que hice desde la fuente con la última versión de iTerm2(Build 1.0.0.20140518). ¿Hay algo que extraño aquí? El desarrollador principal de sympy es uno de la red StackExchange. Sería genial saber su opinión sobre esto.

En este momento, ejecutar su ejemplo a través de live.sympy.org arroja muchos errores de Unicode; ¿tal vez haya un problema general con la compilación más reciente?
@Asmus, ¿a qué te refieres con los errores de Unicode? Si no se procesa correctamente, es un problema con su navegador o la fuente que está utilizando.
@asmeurer Intenté copiar y pegar las tres líneas de Python anteriores directamente en la sesión del navegador (Safari) y obtuve el siguiente resultado: Exception in SymPy Live of type <type 'exceptions.UnicodeEncodeError'>[. . . ] UnicodeEncodeError: 'ascii' codec can't encode character u'\u2320' in position 0: ordinal not in range(128). Puedo enviarle la salida de error completa si lo desea.
@Asmus, si pudiera abrir un problema , sería genial. No puedo reproducirlo yo mismo.
@asmeurer El problema ahora se puede encontrar aquí

Respuestas (2)

Finalmente descubrí cuál es el problema. El problema no estaba en los propios emuladores de terminal ya que ambos OSX Terminalya iTerm2estaban usando UTF-8por defecto. Resultó que uno tiene que informar a Python explícitamente que la terminal es capaz de manejar Unicode por medio de

export PYTHONIOENCODING=utf-8

Créditos a esta respuesta de stackoverflow.

Interesante, nunca he oído hablar de esta variable de entorno. Me pregunto si esta es una situación que Python 3 maneja mejor.
Esto no funcionó para mí. Incluso probé Python 3 con la esperanza de que pudiera funcionar, pero no funcionó.

Asegúrese de que su terminal en las preferencias de iTerm -> Perfiles -> Terminal admita Unicode (la codificación de caracteres debe ser "Unicode (UTF-8)". SymPy elegirá ASCII si el terminal no informa que admite Unicode.

Gracias por tu respuesta. Me temo que ese no es el problema. Tanto en iTerm2 como en Terminal tengo una UTF-8codificación de caracteres y, sin embargo, no funciona.