que utilizan puntas estándar para la personalización de la sesión interactiva de Python:Mira cómo solucionar cálculo de la columna en Python readline si pronta utilización del color
$ cat ~/.bashrc export PYTHONSTARTUP=~/.pystartup $ cat ~/.pystartup import os import sys import atexit import readline import rlcompleter historyPath = os.path.expanduser("~/.pyhistory") def save_history(historyPath=historyPath): import readline readline.write_history_file(historyPath) if os.path.exists(historyPath): readline.read_history_file(historyPath) term_with_colors = ['xterm', 'xterm-color', 'xterm-256color', 'linux', 'screen', 'screen-256color', 'screen-bce'] if os.environ.get('TERM') in term_with_colors: green='\033[32m' red='\033[31m' reset='\033[0m' sys.ps1 = red + '>>> ' + reset sys.ps2 = green + '... ' + reset del term_with_colors atexit.register(save_history) del os, sys, atexit, readline, rlcompleter, save_history, historyPath
ahora consigo la terminación sensible al contexto y rápido de color.
problema viene desde el indicador de color - cuando invoco historia de búsqueda hacia atrás (pulsando UP) en la sesión de Python interactiva Readline tomar en secuencias de escape terminales acount, por lo que la posición del cursor se calculó erróneamente y fue representada erróneamente el texto .
En la página de manual de bash este problema mencionado y se fija mediante marcadores especiales:
\[ begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt \] end a sequence of non-printing characters
Cómo solucionar este problema para Python pedirá?
+1. ¡bpython es una gran cosa! ¿Qué hay de la consola django **./Manage.py **? Mi solución también permite completarla en la sesión interactiva de django, ¿cómo usar bpython para este propósito? – gavenkoa
@gavenkoa En cuanto a [core.managment.commands.shell] (https://code.djangoproject.com/browser/django/trunk/django/core/management/commands/shell.py), veo que si 'ipython 'falla,' bpython' se usa. Si tiene ambos instalados, puede editar ese archivo y reordenar el atributo de clase 'shells' para que' bpython' se intente antes de 'ipython'. – jcollado
Gracias por compartir knowladge – gavenkoa