之前帮老婆用R画图,积攒了一些R脚本,但基本上半年能用一回,加上电脑比较多,每次再用都需要重新折腾配置一遍R的环境。基本的开发环境是单独安装R,然后用PyCharm中调用。这次折腾又遇到原来代码跑不起来的情况,主要面临两个问题:一个是新版本的R在PyCharm中画图不显示,一个是旧版本的R安装软件包各种依赖报错。第一个问题上一篇已经解决,本篇主要针对第二个问题。
  隐约记得上次开发用的是4.0版本的R(之前一直用的3.6,上次尝试了4.0也可以),于是就基于4.0进行环境配置,打开自己写的R项目的库文件,根据PyCharm的提示自动安装,但总是提示安装失败,前前后后各种失败简单罗列如下:

ERROR: dependencies 'gtable', 'lifecycle' are not available for package 'ggplot2'
ERROR: dependency 'rlang' is not available for package 'lifecycle'
installation of package ‘scales’ had non-zero exit status
ERROR: dependencies 'lifecycle', 'rlang', 'scales', 'vctrs' are not available for package 'ggplot2'
installation of package ‘ggplot2’ had non-zero exit status
installation of package ‘lifecycle’ had non-zero exit status
ERROR: dependency 'rlang' is not available for package 'dbplyr'
Package which is only available in source form, and may need compilation of C/C++/Fortran: ‘stringi’

  解决方法也很简单,就是直接安装二进制(binary)的包,具体可以根据控制台提示,缺啥包就安装啥包:

install.packages("包名",type="binary")

  关键在于这里面的type=”binary”
  为了避免安装每个包都加这个选项,可以在安装前统一加上这句:

options(pkgType="binary")

  问题解决了,到底咋回事呢?根据官方文档,“type: Will be “source” except on Windows and some macOS builds”,R install.packages()函数默认安装类型是source(源码)。插件的源码版本不断更新,默认安装是最新版本,最新版本的依赖关系在最新或当前版本的R下是work的,但在历史版本R下依赖关系是混乱的,于是就出现了各种问题。二进制(binary)插件恰恰相反,版本不是最新,但在对应的R版本下依赖关系是没问题的。btw:用豆包翻译文档很香

  参考 1 2