专栏首页数据分析1480再见虚拟机!在Win10中使用Linux版本的R和Python

再见虚拟机!在Win10中使用Linux版本的R和Python

想象一下,你用 Linux 版本的 Tensorflow 建立了一个美妙的 RNN 模型,然后无缝切换到 Windows 用 Excel 直接编辑结果,画了一幅 fancy 的图给你的老板。在此期间,你的所有模型文件已经被自动同步到了 Onedrive/百度云/Dropbox 上了!整个过程丝毫没有使用虚拟机的“膈应”感!

在前面

相信在Windows中使用 Python 和 R 小伙伴为数不少,虽然 Python 和 R 并不挑平台,但是总还有一些情况 Linux 版本更有优势,这些情况包括:

R 在 Linux 中使用并行计算包 Parallel 更快,因为 R 可以直接调用 Linux 内核中的 fork 功能复制 N 个“一摸一样”的线程,但是在 Window 中,fork 并不被支持,想要创建多线程,就必须先创建一个主线程,然后再创建从线程,比较麻烦。体现在使用过程中,我们可以在 Linux 中直接使用 mcapply 进行多线程操作,但是在 Windows 中,我们必须提前创建 worker,然后再初始化,然后才能调用多线程函数。

有些包没有 Windows 版本。 对于 Python 和 R 双修的同学,一个迫切的需求就是能够在同一个 jupyter 笔记本中调用两种语言,但是很可惜,完成两种语言互相调用的神包rpy2 并没有官方的 Windows 版本。此外,R 中最好的数据处理包 data.table,也只有在 Linux 中才有对应的 Python 版本。

有些软件没有 Windows 版本。 比如使用最广泛的基于内存的键值数据库 Redis,以及 Jupyterhub。

拟机

然而,除非是职业开发者,将主力操作系统完全转移到 Linux 可能是一件得不偿失的事。此时一个常见的折衷办法是使用虚拟机,不过虚拟机本身也很有很多问题

虚拟机资源开销巨大。原来就捉襟见肘的内存和硬盘,开了虚拟机后可能就没多少留给 R 了(别忘了 R 和 Python 需要把所有数据都加载到内存中!)此外,虚拟机还会挤占 CPU 资源 (用 MacOS的同学一定深有体会)。本来我们期望的是 Linux 中的 R 能带来更好的并行运算效率,但是虚拟机不光吃掉了 Linux 带来的效率优势,性能更可能还不如在 Windows 版本。

虚拟机访问宿主系统资源比较麻烦。举个例子,假如我们在虚拟机中创建了很多数据集,但是突然有一天我们想要用 Office 打开,这时我们只能把这些数据从虚拟机中复制到宿主机中。明明只是想查看一个文件,结果却不得不在两个系统中复制一遍。可以说,虚拟机最大的缺点在于 虚拟机和宿主机无法操作“同一个”文件。 背后的原因在于,虚拟机对于宿主系统来说是个外来者,因此虚拟机中的系统想要访问 Internet 或者宿主系统中的文件,就必须使用某种技巧“在宿主系统的防火墙中打一个洞”。

那么有没有什么办法可以让我们同时享受 Linux 带来的效率和 Window 给我们带来的便捷呢?答案就是微软在 Win10 中推出的 Linux 子系统 WSL(Windows Subsystem for Linux)!Win10 中的这个 Linux 子系统并不是虚拟机,而是和 Win10 并行的子系统,你可以用它可以完成 Linux 能做的“几乎”所有事,包括 bash。

根据官方文档,相对于虚拟机,WSL 的优点是:

……WSL 需要更少的资源(CPU, 内存,硬盘)。WSL 能够让你在 Windows 命令行中直接运行 Linux 命令,并且直接访问你在 Windows 中的资源。因此,你能同时使用 Linux 和 Windows 中的工具对同一组文件进行操作!

方高能

温馨提醒:本教程适合对于 Linux 有基本了解的读者(比如知道什么是 bash,什么是 curl 命令等)。当然 Linux 零基础的读者按照教程也可以顺利安装,但由于 WSL 没有图形界面,只能通过命令行运行,因此第一次使用可能会比较陌生。

Okay,那就让我们直接进入正题:和在Win10中使用Linux版本的R和Python

启用 Linux 子系统

1. 在微软商店下载 Linux 子系统

打开 Win10 的微软商店,搜索“Linux”,我们会发现微软已经为我们提供了众多的 Linux 发行版本。选择你需要的版本,如果你不知道选哪个,就选 Ubuntu 吧。选好后点击安装。

2. 在 Win10 中开启 Linux 子系统 在 Win10 的搜索栏中(也可以通过按 Win 键调出)输入“windows 功能”。

勾选“Linux子系统”这栏。顺带一提,列表中的“Hyper-V”是 Win10 自带的虚拟机,微软的 Azure 就是基于自家 Hyper-V 技术。

成功安装完之后,我们可以在开始菜单中看到“Ubuntu”(假如我们安装的是Ubuntu)

安装 Jupyter 和 Python

如果你的任务是科研或者数据科学,那么大猫强烈推荐 Jupyter + R/Python 的组合。在这里我们采用如下安装策略:先安装 Linux 版的Anconda,期间 Python 和 Jupyter 会自动安装。然后我们再单独安装 R。

首先我们在开始菜单中点击 Ubuntu,调出 Linux 命令行。如果我们是第一次运行 WSL,那么会被提示建立一个新的账号:

成功建立账号后,我们运行一下程序把 Linux 里的包更新到最新版本:

sudo apt update &&

sudo apt upgrade ```

更新完之后,我们开始下载 Anaconda。首先去 Anaconda 的官网找到最新版本的网址(repo.continuum.io/archive/)。

大多数情况下,我们会安装 Python3 64位 版本,也就是图中框出来的那个。复制下他的地址,这里为 https://repo.continuum.io/archive/Anaconda3-2018.12-Linux-x86_64.sh

运行以下wget命令,下载安装文件:

wget https://repo.continuum.io/archive/Anaconda3-2018.12-Linux-x86_64.sh

Linux 会把安装文件默认下载到当前文件夹,如果要改变文件夹,请自行调整。

运行以下命令,进行安装:

bash Anaconda3-2018.12-Linux-x86_64.sh

测试是否安装成功。在 Linux 命令行中输入 jupyter lab,然后在 Windows 中使用浏览器打开 locolhost:8888(默认端口为8888)。如果你的 Linux 命令行出现类似信息:

并且浏览器返回:

恭喜你!你已经成功在 Linux 子系统中创建了一个 Jupyter 服务器并且在 Windows 中直接访问了!

安装 R (Linux)

大猫强烈推荐使用微软的 Microsoft R Open。MRO不仅和原生R百分之百兼容,更增加了英特尔多线程库,大幅提升了计算能力。我们打开这个(mran.microsoft.com/download)网址,找到 MRO 的下载链接:

使用以下命令下载:

wget https://mran.blob.core.windows.net/install/mro/3.5.1/microsoft-r-open-3.5.1.tar.gz

进入下载文件所在目录,运行以下命令解压安装包:

tar -xf microsoft-r-open-3.5.1.tar.gz

解压完成后,会出现一个 microsoft-r-open 文件夹,通过以下命令进入这个文件夹:

cd microsoft-r-open/

使用以下命令安装:

sudo ./install.sh

如果你使用的是 Ubuntu 18.04 版本,那么你还需要安装 libpng12 这个包,运行以下命令:

wget https://mirrors.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.debdpkg -i libpng12-01_1.2.54-1ubuntu1_amd64.deb

恭喜你,MRO 安装成功!这时如果你在命令行中直接键入 R,你就会看到如下启动画面:

在 Jupyter 中配置 R(Linux)

最后一步,我们需要把 R 配置到 Jupyter 中。

1. 安装 devtools 继续上一步,在 Linux 命令行中打开 R 后,运行我们熟悉的 install.packages('devtools')来安装包。

2. 安装 IRKernel 运行以下命令安装:

library(devtools) options(unzip = "internal") devtools::install_github('IRKernel/IRkernel')

3. 在 Jupyter 中配置 IRKernel 在 R 的命令行中,运行以下命令:

IRkernel::installspec(name = 'ir35', displayname = 'MRO-3.5.1')

这里 displayname 设置为你容易识别的名字即可。

最后来看一下成果吧!

结撒花

经历了那么多,现在我们终于可以自豪的宣布:老纸在 Windows 中不依赖虚拟机就搭建了一个 R 和 Python 的 Linux-Jupyter 服务器! 别忘了,在windows系统中你还能搭建另一个 Jupyter 服务器,也就是说,你现在已经左拥右抱,走向人生巅峰了!

双倍的系统,是否给你双倍的快乐呢?

本文分享自微信公众号 - 数据分析1480(lsxxx2011),作者:大猫&村长

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 大数据之脚踏实地学02--远程连接与目录结构

    在上一期的脚踏实地学中,我们介绍了如何在自己的Windows系统中安装虚拟机和CentOS系统,这个操作相当于模拟了一台远程服务器(注意,这是模拟哦。土豪的你可...

    1480
  • 大数据之脚踏实地学01--虚拟机和Linux系统的安装

    曾记得我在读研的时候,参加了中国统计年会(2013年),在会上很多领域内的专家都谈及了大数据一词,然而那个时候的我并没有那么敏感。短短5年过去了,大数据行业发展...

    1480
  • 快看,动图合集展示Excel的实用技巧!

    办公软件看似简单,其实花样很多,尤其Excel表格。真心后悔当初大学没好好学计算机,只顾着用电脑玩LOL,看美国大片,工作后才知道office的重要性,不夸张的...

    1480
  • 这么多Linux版本,你究竟该怎么选择?

    Linux有非常多的版本,比如世面上常见的有 Ubuntu、RedHat、Fedora、Centos等等,这么多的版本我们究竟该选哪一个呢?今天我带大家对各个版...

    Coding十日谈
  • 如何学习Linux

    在现在的生活,生产,研究等领域,Linux已经无所不在,从我们使用的手机,车载设备,到服务器,桌面电脑等,Linux已经成为这个世界方方面面的基石。尤其对于参与...

    马哥教育小师哥
  • 你必须知道Linux系统的七种优势

    熟悉电脑的人都知道,Linux 相比较于 Windows 有着众多的优势,所以现在越来越多的电脑用户开始使用 Linux 进行办公、学习。总体来讲,Linux ...

    砸漏
  • 干货 | Linux新手入门好书推荐

    经常有读者问小编可否推荐一些 Linux 入门书籍,正好最近在知乎也看到类似的问题,如几个零碎的命令难以在 Linux 环境中存活,所以如果要真正形成自己的知识...

    砸漏
  • 最全Linux/C/C++学习思维导图,请收藏!

    如果你感觉不方便查看,没关系,民工哥已经将这些图打包好了,上传至网盘,供大家下载,大家只需在 民工哥技术之路 公众号后台回复关键字 Linux思维导图 即可免...

    民工哥
  • Linux 迎来 29 岁:从个人爱好到统治世界的操作系统

    1991 年的 8 月 25 日,来自芬兰赫尔辛基大学的 Linus Torvalds 用 Minix 操作平台建立了一个新的操作系统内核,并把它发回 Mini...

    民工哥
  • 一天一点学linux

    随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起。就像是战争,你有勇气战胜一切敌人,但你...

    猿人谷

扫码关注云+社区

领取腾讯云代金券