Python2.7环境导入Keras触发f-string无效语法SyntaxError如何解决
报错原因
该问题由Python环境版本与安装的Keras版本不兼容直接导致:
- f-string(即报错位置的
f'at {latest_checkpoint}. Retrying. '字符串格式化语法)是Python 3.6版本才正式引入的语法特性,Python 2.7 完全不识别该语法,解析到对应代码行就会抛出SyntaxError: invalid syntax。 - 你当前使用的是Anaconda2创建的Python 2.7版本虚拟环境
dl_gwas,但环境中安装的是适配Python 3.6+的高版本Keras。Keras从2.3.0版本开始就停止了对Python 2.7的支持,源码中大量使用了Python3专属语法,因此在导入阶段就会触发语法错误。
可行解决方法
按稳定性从高到低排序:
- 方案1(最推荐,无后续兼容问题):新建Python3版本虚拟环境安装适配依赖
操作流程:- 执行命令创建Python3.7版本(对老Keras项目兼容性最好)的新虚拟环境:
conda create -n dl_gwas_py3 python=3.7 - 激活新环境:
conda activate dl_gwas_py3 - 安装匹配的Keras和TensorFlow版本:
pip install keras==2.10.0 tensorflow==2.10.0,如果你的项目有指定版本要求,替换为对应适配Python3的版本即可 - 在新环境中重新运行
height.py脚本即可正常导入Keras
- 执行命令创建Python3.7版本(对老Keras项目兼容性最好)的新虚拟环境:
- 方案2(需保留Python2.7环境时使用):降级Keras到最后一个支持Python2.7的版本
操作流程:- 激活现有
dl_gwas环境:source activate dl_gwas - 卸载当前不兼容的高版本Keras:
pip uninstall keras -y - 安装Python2.7兼容的Keras及配套依赖:
pip install keras==2.2.5 tensorflow==1.15.0
- 激活现有
- 方案3(临时应急,不推荐长期使用):手动修改报错文件语法
找到报错的sidecar_evaluator.py第209行,把f-string写法替换为Python2.7支持的format写法:'at {}. Retrying. '.format(latest_checkpoint)。注意该方法仅能修复当前这一处报错,高版本Keras中存在大量其他Python3专属语法,后续还会触发同类错误,仅适合临时调试使用。
内容的提问来源于stack exchange,提问作者jek
相关产品推荐
相关产品推荐

