已安装Pillow仍报错?R中Keras图像加载问题求助
之前我的Keras/TensorFlow原本可以正常运行,后来莫名崩溃,于是按以下步骤卸载重装:
- 安装ANACONDA 2019.03 X64版本;
- 在Anaconda Prompt执行以下命令:
conda update -n base -c defaults conda pip install --upgrade pillow conda install -c conda-forge keras tensorflow pip install tensorflow --upgrade - 安装R 3.6.0;
- 安装Rstudio 1.2.1335;
- 安装Rtools3.5并勾选"add rtools to syst path";
- 在Rstudio中执行以下代码:
install.packages("devtools") library(devtools) devtools::install_github("rstudio/keras") library(keras) devtools::install_github("rstudio/tensorflow") library(tensorflow) install_tensorflow()
但运行Keras模型时出现错误:
Error in image_load(idx, target_size = c(64, 64)) : The Pillow Python package is required to load images
明明已经安装了Pillow,为什么还会报错?该如何解决?
环境详情
执行tf_config()结果:
TensorFlow v1.14.0 (C:\Users\Mezeix\ANACON~1\envs\R-TENS~1\lib\site-packages\tensorflow\__init__.p)
执行reticulate::py_config()结果:
python: C:\Users\Mezeix\Anaconda3\envs\r-tensorflow\python.exe libpython: C:/Users/Mezeix/Anaconda3/envs/r-tensorflow/python36.dll pythonhome: C:\Users\Mezeix\ANACON~1\envs\R-TENS~1 version: 3.6.8 |Anaconda, Inc.| (default, Feb 21 2019, 18:30:04) [MSC v.1916 64 bit (AMD64)] Architecture: 64bit numpy: C:\Users\Mezeix\ANACON~1\envs\R-TENS~1\lib\site-packages\numpy numpy_version: 1.16.4 tensorflow: C:\Users\Mezeix\ANACON~1\envs\R-TENS~1\lib\site-packages\tensorflow\__init__.p python versions found: C:\Users\Mezeix\Anaconda3\envs\r-tensorflow\python.exe C:\Users\Mezeix\ANACON~1\python.exe C:\Users\Mezeix\Anaconda3\python.exe
问题分析与解决办法
从你的环境信息能看出来,核心问题是R的reticulate包没有关联到正确的Python环境——你在Anaconda的base环境装了Pillow,但R实际调用的是r-tensorflow这个虚拟conda环境,而这个环境里根本没装Pillow,所以才会报错。
具体解决步骤:
激活R对应的conda环境并安装Pillow
打开Anaconda Prompt,先切换到r-tensorflow环境:conda activate r-tensorflow然后直接在这个环境里安装Pillow,推荐用conda安装更适配环境:
conda install -c anaconda pillow # 也可以用pip:pip install pillow在R里验证Pillow是否可用
打开RStudio,执行以下代码确认Pillow能被正确导入:library(reticulate) # 也可以直接用这个命令在指定环境安装Pillow,省得切换终端 # py_install("pillow", envname = "r-tensorflow") pillow <- import("PIL") print(pillow$`__version__`)如果能正常打印出Pillow的版本号,说明关联成功了。
重启RStudio并测试模型
环境变量的更新有时候需要重启才能生效,关闭RStudio再重新打开,然后运行你的Keras模型,应该就不会再出现Pillow缺失的报错了。
额外小贴士:
以后安装Python相关包时,尽量确保是在R当前使用的conda环境里操作。可以在R里执行reticulate::use_condaenv("r-tensorflow", required = TRUE)强制指定环境,后续用py_install安装的包都会直接到这个环境里,避免再出现环境不一致的问题。
内容的提问来源于stack exchange,提问作者Laurent

