script - Setupterm no pudo encontrar el terminal, en el programa Python usando curses
python curses (4)
Debe establecer las variables de entorno TERM
y TERMINFO
, de esta manera:
export TERM=linux
export TERMINFO=/etc/terminfo
Y, si su dispositivo no tiene este directorio ( /etc/terminfo
), hágalo y copie la base de datos terminfo.
Para las terminales "linux" y "pcansi" puede descargar la base de datos:
Estoy tratando de obtener un script de curses simple para ejecutarse usando Python (con PyCharm 2.0)
Este es mi guión:
import curses
stdscr = curses.initscr()
curses.noecho()
curses.cbreak()
stdscr.keypad(1)
while 1:
c = stdscr.getch()
if c == ord(''p''): print("I pressed p")
elif c == ord(''q''): break
curses.nocbreak(); stdscr.keypad(0); curses.echo()
curses.endwin()
Cuando ejecuto esto desde mi IDE (PyCharm 2) obtengo el siguiente error:
_curses.error: setupterm: could not find terminal
Process finished with exit code 1
Si ejecuto el script desde bash, simplemente quedará bloqueado en el bucle while y no reaccionará al presionar p o q.
Cualquier ayuda sería apreciada.
Encontré esta pregunta al buscar ejemplos porque también estoy aprendiendo a usar curses, por lo que no sé mucho sobre eso. Sé que esto funciona aunque
import curses
try:
stdscr = curses.initscr()
curses.noecho()
curses.cbreak()
stdscr.keypad(1)
while 1:
c = stdscr.getch()
if c == ord(''p''):
stdscr.addstr("I pressed p")
elif c == ord(''q''): break
finally:
curses.nocbreak(); stdscr.keypad(0); curses.echo()
curses.endwin()
También agregué el intento: finalmente: para asegurarme de que el terminal tenga su apariencia original, incluso si algo simple sale mal dentro del bucle.
Debe usar el comando addstr para asegurarse de que el texto se mostrará dentro de la ventana.
Estaba teniendo el mismo problema. Consulte Programación de cursas con Python - Iniciar y finalizar una aplicación de cursas .
Hay una función curses.wrapper()
que simplifica el proceso de inicio / finalización de una aplicación de curses.
Aquí está el ejemplo del documento de Python:
from curses import wrapper def main(stdscr): # Clear screen stdscr.clear() # This raises ZeroDivisionError when i == 10. for i in range(0, 11): v = i-10 stdscr.addstr(i, 0, ''10 divided by {} is {}''.format(v, 10/v)) stdscr.refresh() stdscr.getkey() wrapper(main)
Vaya a la configuración de ejecución / depuración (la que está junto al botón de ejecución Pycharm). Se adhiere a la terminal emular en la consola de salida. Entonces podrás ejecutar tu programa con el botón de ejecutar.