用2台电脑做案例,手把手教你装好Anaconda, R, Rstudio, rpy2


【写在前面】
工作需要,有时需要把一些远古代码的R和python混写,之前电脑里单独装过R/Python/sublime/Pycharm/vscode/Rstudio/Anaconda,每次换一个编译器环境整个乱了套。怒下决心探索出一套轻量的方便的开发环境。

这周分别给自己的电脑和公司的电脑重装了系统,重新走了一遍Anaconda,rpy2等等一系列各种魔鬼级报错的软件和包。因为当初不信邪,仗着自己是新系统,我把所有最“简单纯粹”的安装方法都试过了。这么说吧,出于对墨菲定律的尊敬,在这过程中可能/没可能遇到的报错,我都经历了一次(以至于我觉得自己系统又脏了想再重装)。最后选出的这个最优方案,可以优雅的一次搞定,十分lightweight, 在这里分享给大家。>v<

有一说一,这个教程应该是目前最最靠谱之一了。目前2020年4月1日,非常好用。

1. Anaconda下载安装

1.1 下载

清华镜像下载Anaconda
地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

我两个设备一个从官网,另一个从清华镜像分别下载。区别是:官网那个在后续安装的时候不会提出帮忙安装vscode,而且官网的下载速度很慢(一个我吃了午饭还没下好,另一个秒下)。其他并没有什么特别影响后续操作的区别。
在这里插入图片描述

1.2 安装

正常按指示安装,不过有几个地方需要注意下:

  • All users还是当前用户,这个根据需要选,电脑自己用的话可以All users

  • 安装路径有几个需要注意的地方:①不要有中文和空格;②不要装在Program File里面,因为它有空格,以后有几个packages会安装不成功;③有的时候ProgramData这个文档会隐藏起来,所以如果之前ProgramData没有的话可以手动建一个,不然安完conda之后它藏起来了还得手动找;④改路径之后记得写Anaconda3,不然它就不给安

    以我的两台电脑为例,安装路径分别是:
    C:\ProgramData\Anaconda3
    D:\ProgramData\Anaconda3

  • 关于Add path这件事,有人说要加,有人说现在不加手动加,官方说加到system path里会带来后续的问题。我的建议是:如果你平时只用anaconda的环境的话,还是加上,如果有很多环境需求…那你肯定不用看这个教程了。
    在这里插入图片描述
    我的两台设备,一个是加的,一个是安装结束之后手动加的,都能正常用。手动加的话这样就可以(路径里带Anaconda的那5个):
    电脑1号↓在这里插入图片描述
    电脑2号↓
    在这里插入图片描述

2. 添加清华镜像

打开anaconda prompt和清华镜像网站
https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
Windows系统下先输入:
conda config --set show_channel_urls yes
在这里插入图片描述
我最后两台电脑添加的都是
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free

另附几个小指令:

  • 查看以添加好的channel:Conda config --show
  • 删除:conda config --remove channels 某地址
  • 添加:conda config --add channels 某地址
  • Anaconda环境下JupterNotebook执行shell命令:在Jupter notebook里加!

3.为r配置新环境

我先说写这个位置我曾经用的做法:
电脑2号(装在C盘里那个),我直接conda install r, 第一次网络不好没成功,第二次成功了;
电脑1号(装在D盘里那个),我直接conda install r失败了显示executing transaction denied,于是我用管理员身份打开cmd输入conda install r成功了显示下图,但是!
在这里插入图片描述
后面再安装其他包的时候会报错:
在这里插入图片描述
于是我又上网差这个OPENSSL的解决问题,各种花式替换dll文件…反正能试的都试了最后还没解决。于是我把Anaconda卸载了又重装一次…这个原因好像是在安装r的时候,有几个包的python是3.7.1,而我的conda的python是3.7.0,所以文件之间相互替换出了问题。

最后采用的方案是:为r配置新环境,在新环境里安装r。操作过程如下,也不用管理员身份打开,直接在prompt里输入:
conda create -n 你取的虚拟环境名字

然后,conda install r,就不会报错了。做完之后记下R所在的位置,后面会用到。我的两个电脑R.dll路径分别是:
D:\ProgramData\Anaconda3\envs\with_rpy2\lib\R\bin\x64
C:\Anaconda3\Lib\R\bin\x64 (这个我没有为r配置虚拟环境所以没有envs)
在这里插入图片描述
安好后直接在conda prompt里输入r,没报错可以写r代码了就成功了。

4. 安装Rstudio

两个电脑我都用了Conda install rstudio,不过都没有成功。所以我决定直接在官网下RStudio。
在这里插入图片描述
RStudio安装的时候,会说它检测不到r,让你重新下载安装。这个时候不用重新下载r,它有三个选项,只需要选第三个自定义路径的那个,然后把路径指向(以电脑1号为例)D:\ProgramData\Anaconda3\envs\with_rpy2\lib\R就行,它会上这里面来找。然后下一步就可以使用Rstudio了。

5. 安装rpy2

真的,没有哪个包能像这个包一样对我造成如此深刻的心里阴影。所有,所有网友们遇到的报错我都遇到了。其实就两步,我说下现在主流的几种做法(不要轻易尝试):

【下载与安装】
Conda install rpy2
Pip install rpy2
下载轮子,然后pip/conda 安装轮子
【配置R_HOME/R_USER】
…说路径指向哪儿的都有,我总结不过来了

好了,只要是上述的方法你们都不要看了,真的我都试过了。我的一个老系统/两台新装如此干净的系统,我用这些方法就没一次成功过。你们谁也向我这样绝望的话,来试试我的方法,一次成功。

5.1 下载

直接上这个网站,下载轮子
https://www.lfd.uci.edu/~gohlke/pythonlibs/#rpy2
在这里插入图片描述

5.2 安装

把这个轮子的whl后缀改成zip,直接解压。会发现里面有两个文件夹,一个叫rpy2,另一个叫rpy2-2.9.5.dist-info。把这两个解压好的文件直接复制粘贴到anaconda->Lib->site-packages这个文件夹下,像这样:
电脑1号↓
在这里插入图片描述
电脑2号↓
在这里插入图片描述

5.3 加系统变量

我是加的系统变量,因为我只有这一个R,路径如下:
R_HOME是我们刚刚安装的R的位置,不用指向R.dll
R_USER是rpy2刚刚放在的位置
以下是两台电脑的实例:
电脑1号↓
在这里插入图片描述
电脑2号↓
在这里插入图片描述
(电脑1号里面那个with_rpy2是我安装r的环境的名称,不要混淆啦。)
事实证明斜杠的方向没有影响,我之所以电脑2号换了一个斜杠是因为,当时看这个包的源代码的时候发现它要读取R_HOME的位置,用的是这个斜杠/,我以为当时配置不成功是因为斜杠方向的原因…

5.4 输入指令确认安装是否成功

这几件事做完了之后基本就成功了。然后接下来我们要输入三行指令:
Import rpy2
#为了看rpy2是否安装成功
Import rpy2.robjects as rob
#R_HOME和R_USER对没有,如果这一句报错的上一句没报错的话就不是安装的问题
from rpy2.robjects.packages import importr
#这句话决定刚刚安好的rpy2能不能成功调用r的代码
在这里插入图片描述
↑这个图就是R_HOME和R_USER没写对会报的错
在这里插入图片描述
↑这个图就是成功运行啦!
优雅!Elegant!

5.5 多说几句rpy2的使用给大家参考

  • 我电脑里除了conda还有另一个r的时候,我把R_HOME指向的是我非conda那个r的路径,这时加载那个Importr会报错。原因是anaconda安装rpy2的时候会将R的库默认的指向一个library的位置,但这个位置不是非conda R的library的位置,所以在调取的时候改成非xonda r里那个包所在的位置就可以了。像这样:
    在这里插入图片描述
  • 2.有一个报错是Conversion ‘py2ri’ not defined for objects of type ‘<class ‘pandas.core.series.Series’>’
    原因是往robjects里面传递变量的时候不能直接传pd.array,pd.Sereis和pd.DataFrame给R,要先用robjects.FloatVector把python array变成R的vector才能传进R.像这样:在这里插入图片描述
    (这里致谢下来自一号缸同学的帮助)

最后的最后,当你做完一切之后如果发现还不成功,有一个终极法宝:
【重启】
我就是安装到最后崩溃了,绝望之下重启了电脑,发现一切可以正常运行了…我的内心…

愿大家一切顺利!有问题留言!

发布了1 篇原创文章 · 获赞 2 · 访问量 95

猜你喜欢

转载自blog.csdn.net/MissChaos/article/details/105257766