PyInstaller打包含blessed库的程序报错找不到vtwin10终端是什么原因?
错误原因
- blessed库依赖terminfo终端配置数据库实现终端色彩、控制字符适配,你使用pyinstaller打包为单文件exe时,pyinstaller默认不会自动将blessed库自带的terminfo配置文件纳入打包资源,exe运行时找不到Windows CMD默认的
vtwin10终端对应的配置条目,因此抛出该警告。 - 你提供的代码还存在逻辑错误:
board.is_check、board.is_checkmate、board.is_stalemate是python-chess库的调用方法,你当前未添加括号直接和True判断,永远不会返回真,会导致将军、对局结束的判定逻辑完全失效,需要修改为board.is_check()、board.is_checkmate()、board.is_stalemate()。
解决方案
- 方案一:打包时手动添加blessed的terminfo资源
先找到你本地虚拟环境中blessed库的安装路径,定位到Lib/site-packages/blessed/terminfo目录,修改打包命令为:
注:Windows系统下路径分隔符使用分号,Linux/macOS系统替换为冒号即可。pyinstaller random_move_chessbot.py --onefile --add-data "你的虚拟环境实际路径/Lib/site-packages/blessed/terminfo;blessed/terminfo" - 方案二:手动指定兼容终端类型
初始化Terminal对象时手动指定Windows兼容的终端类型,将term = blessed.Terminal()修改为term = blessed.Terminal(kind='windows-ansi'),即可规避vtwin10终端配置找不到的问题,基础色彩输出功能不受影响。
内容的提问来源于stack exchange,提问作者Sas2k
相关产品推荐
相关产品推荐

