使用R的keras和tensorflow训练LSTM时遇PyType_GetFlags错误求助
解决R中keras/tensorflow调用时PyType_GetFlags错误的方法
问题详情
我正在使用library(keras)和library(tensorflow)训练LSTM模型,运行代码时出现以下错误:
MODULE: Removing module /shared/modulefiles-tools/python/miniconda-3.9
Error: PyType_GetFlags - /usr/lib64/libpython2.7.so.1.0: undefined symbol: PyType_GetFlags
环境信息
- R版本:
$platform [1] "x86_64-pc-linux-gnu" $arch [1] "x86_64" $os [1] "linux-gnu" $system [1] "x86_64, linux-gnu" $status [1] "" $major [1] "4" $minor [1] "2.3" $year [1] "2023" $month [1] "03" $day [1] "15" $`svn rev` [1] "83980" $language [1] "R" $version.string [1] "R version 4.2.3 (2023-03-15)" $nickname [1] "Shortstop Beagle"
- Python环境:
/shared/modulefiles-tools/python/miniconda-3.9
解决步骤
该错误源于系统同时存在Python2.7与Python3.9环境,R的reticulate包错误关联到Python2.7的库文件,可按以下方式处理:
- 明确指定R使用的Python环境
在加载keras/tensorflow前,用reticulate绑定目标conda环境:
library(reticulate) use_condaenv("/shared/modulefiles-tools/python/miniconda-3.9", required = TRUE) library(keras) library(tensorflow)
- 验证Python环境链接
运行以下命令确认当前R关联的Python版本:
py_config()
确保输出的Python路径指向miniconda-3.9目录,而非系统默认的Python2.7。
- 清理模块加载冲突
若之前加载过系统Python模块,先卸载再重新加载目标conda模块:
module unload python/miniconda-3.9 module load python/miniconda-3.9
之后重启R执行训练代码。
- 设置环境变量强制指定库路径
若上述方法无效,启动R前设置环境变量,让系统优先加载conda环境的Python库:
export LD_LIBRARY_PATH=/shared/modulefiles-tools/python/miniconda-3.9/lib:$LD_LIBRARY_PATH
再启动R运行代码。
内容的提问来源于stack exchange,提问作者Joe94
相关产品推荐
相关产品推荐

