Linux下Python 3.10调用Stockfish库遇ValueError问题求助
解决Python stockfish库初始化时版本解析错误的问题
问题原因
Python stockfish库(3.28.0版本)在解析Stockfish引擎版本时,默认假设版本字符串以纯数字开头(如16、17),但你使用的开发版/无Git信息的Stockfish返回的版本字符串是dev202211114nogit这类带前缀的格式,导致库尝试将其转换为整数时抛出ValueError。
解决方法
1. 使用官方稳定版Stockfish引擎
下载官方发布的稳定版Stockfish(而非开发分支或无版本信息的二进制包),这类版本的版本字符串为标准数字格式,能被Python stockfish库正常解析。编译时切换到仓库的稳定版tag再执行make即可。
2. 修改Python stockfish库的版本解析逻辑
如果必须使用开发版引擎,可修改库的版本解析代码:
- 打开报错文件:
/username/.conda/envs/alpha/lib/python3.10/site-packages/stockfish/models.py - 定位到版本解析的代码段(约第57行附近),替换为以下逻辑,提取版本字符串中的数字部分:
version_output = self._read_line() version_parts = version_output.split() version_str = version_parts[1] # 提取版本中的数字内容 import re match = re.search(r'\d+', version_str) if match: version_num = match.group() self._stockfish_major_version: int = int(version_num.split('.')[0]) else: # fallback到默认版本 self._stockfish_major_version = 15
3. 对齐两台机器的环境配置
对比正常机器上的Stockfish引擎版本:确认正常机器使用的是稳定版引擎,而非开发版。将当前机器的Stockfish替换为相同版本即可解决问题。
内容的提问来源于stack exchange,提问作者scoopfaze
相关产品推荐
相关产品推荐

