Error ejecuntado bpython en ubuntu 12.04 3

Al ejecutar bpython bajo ubuntu 12.04 encontramos un feo error:

Traceback (most recent call last):
File "/usr/bin/bpython", line 9, in
load_entry_point('bpython==0.10.1', 'console_scripts', 'bpython')()
File "/usr/lib/python2.7/dist-packages/bpython/cli.py", line 1756, in main
banner=banner)
File "/usr/lib/python2.7/dist-packages/bpython/cli.py", line 1658, in curses_wrapper
return func(stdscr, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/bpython/cli.py", line 1701, in main_curses
main_win, statusbar = init_wins(scr, config)
File "/usr/lib/python2.7/dist-packages/bpython/cli.py", line 1549, in init_wins
get_colpair(config, 'main'))
File "/usr/lib/python2.7/dist-packages/bpython/cli.py", line 1416, in __init__
self.settext(s, c)
File "/usr/lib/python2.7/dist-packages/bpython/cli.py", line 1515, in settext
self.win.addstr(s, self.c)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in position 71: ordinal not in range(128)

Viéndolo con detalle se ve que tiene que ver con algún carácter unicode que no se está escapando en alguna expresion.
Basta buscar en google sobre “bug bpython spanish” para encontrar que no somos los únicos a los que les pasa. En la descripción del bug veremos que ya está resuelto pero que este cambio aún no ha salido en la versión de bpython que se incluye en ubuntu 12.04.
Para resolverlo sólo tenemos que añadir un par de líneas al fichero /usr/share/pyshared/bpython/cli.py
Pasando las líneas 1514 de

if s:
if self.c:
self.win.addstr(s, self.c)
else:
self.win.addstr(s)

a

if s:
if not py3 and isinstance(s, unicode):
s = s.encode(getpreferredencoding())
if self.c:
self.win.addstr(s, self.c)
else:
self.win.addstr(s)
1
Para editar el fichero debemos usar sudo por ser del sistema. Hay que tener cuidado con los espacios porque sabéis que python es bastante puntilloso con ellos.

3 thoughts on “Error ejecuntado bpython en ubuntu 12.04

  1. Reply ikanobori Jul 24,2012 12:58 pm

    Alguien en IRC mostro me este post y esto es ‘fixed’ en https://bitbucket.org/bobf/bpython/changeset/b49882bf57a1. Que version de bpython es esto en Ubuntu 12.04.

  2. Reply admin Jul 24,2012 1:41 pm

    Mi ubuntu 12.04 usa bpython 0.10.1 sobre Python 2.7.3
    ¿Demasiado antigua? es el problema de ubuntu…

  3. Reply cousteau Sep 6,2012 5:58 pm

    Aplicando el parche de esa página (o editando a mano el archivo cli.py y añadiendo esas líneas) se soluciona el problema; a mí me ha funcionado.

Leave a Reply