背景
在使用python curses库(终端字符单元显示的处理)时,报错显示_curses.error: setupterm: could not find terminal。
问题复现
# coding: utf-8
import curses, os
def main(stdscr):
# 清除屏幕
stdscr.clear()
# 获取窗口的高度和宽度
height, width = stdscr.getmaxyx()
# 待添加的字符串
text = "%d %d" %(height, width)
x = width // 2 - len(text) // 2
y = height // 2
# 检查是否超出边界
if x < 0 or y < 0 or (x + len(text)) > width or y > height:
# 处理或报错
# 这里只是简单地将字符串截断
text = text[:width-x]
# 添加字符串
stdscr.addstr(y, x, text)
stdscr.refresh()
stdscr.getch()
if __name__ == "__main__":
#is_term = 0
#for key,value in os.environ.items():
# if key == "TERM":
# is_term = 1
#if is_term == 0:
# os.environ['TERM'] = 'xterm'
# 运行 curses 程序
curses.wrapper(main)
原因分析
主要是shell环境缺少terminal环境设置。
解决方式
设置shell TERM环境变量,代码中可以通过去掉注释的代码解决。
is_term = 0
for key,value in os.environ.items():
if key == "TERM":
is_term = 1
if is_term == 0:
os.environ['TERM'] = 'xterm'