想象一下,你用 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 服务器,也就是说,你现在已经左拥右抱,走向人生巅峰了!

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

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

  1. win10搭建Linux子系统,win10中搭建Linux子系统

    win10自带的Linux子系统,简称WSL(Windows Subsystem for Linux).优势是打通了Linux系统和windows系统,改变了传统虚拟机/双系统形成的两个系统相互隔绝的 ...

  2. 在 Win10 中配置 Linux 开发环境

    很多公司开发用的操作系统是 windows,但 windows 的终端实在难用.win10 发布初期就集成了 linux 子系统,当时还是 beta 版,目前(2018-09-20,我当前 windo ...

  3. win10支持linux内核版本是多少,win10自带linux版本是多少

    满意答案 wslx000 2017.11.04 采纳率:46%    等级:8 已帮助:511人 Bash 的安装和使用 1 在 Windows 10 内部预览版 build 14316 中,点击&q ...

  4. 如何在Win10中检查蓝牙版本

    在设备管理器的蓝牙一栏中,无论是qualcomm或者是intel,只要有蓝牙,我们总能找到相应的蓝牙硬件,比如我的是"英特尔(R)无线Bluetooth(R)". 右键查看属性,在 ...

  5. windows系统使用Tera Term连接虚拟机(VMware Workstation) 中的Linux(CentOS)

    使用的工具 1.Tera Term,下载地址为https://osdn.jp/projects/ttssh2/releases/ 2.VMware Workstation,下载地址为http://ww ...

  6. 在win10中安装caffe并配置MATLAB和Python接口(支持GPU加速)

    笔记本电脑配置(14年的老机器)CPU i54200 显卡:GTX850m 1.软件准备: vs2013 cuda8.0(官网下载,查看显卡是否支持cuda),cudnn v5.0(支持cuda8.0 ...

  7. win10linux子系统root权限,Win10 安装适用于Linux的Windows子系统

    首先是要确定当前win10系统的版本号,部分beta版本可能不一样,但是大致的方法是相同的,比如我当前的系统版本就是win10 1903 安装步骤: 1. 首先是要开启"开发人员模式&quo ...

  8. linux版本有密钥吗,windows7密钥是什么意思又一Linux版本登陆微软Win10

    IT之家10月27日消息 昨日微软Microsoft Store正式上架了SUSE Linux Enterprise Server 15,这是一个开源的服务器操作系统. SUSE Linux Ente ...

  9. CrossOver Mac2022虚拟机如何安装win10系统和linux系统

    虚拟机怎么安装win10系统 虚拟机怎么安装linux系统? Win10系统自2015年正式发布至今已有6年的时间,经历过数次更新,同时在这期间,许多开发的应用都基于该系统,兼容性.稳定性都较好.Li ...

  10. 在虚拟机中安装LINUX

    第二章 在vmware中安装linux 2.1 VMware的安装及配置 2.1.1VMware的简介 简单地说,VMware就是一款虚拟机软件,它可以在你现有的操作系统上虚拟出一个新的子机.这个子机 ...

最新文章

  1. 位于/var/log目录下的20个Linux日志文件
  2. 罗马数字转整数(C实现)
  3. ajax会占用服务器端内存吗,javascript - 为什么不允许在jquery datatable服务器端处理ajax成功使用? - 堆栈内存溢出...
  4. selenium的定位方式
  5. oracle的序列为什么会出错,Oracle系列:(24)序列
  6. docker的macvlan网络
  7. 网站前端性能优化终极指南
  8. 【SOLIDWORKS学习笔记】工程图基础操作
  9. MIPS计算公式总结
  10. 数据库里存放的是什么?
  11. 【情书加密】,c++花式表白,这样泡小师妹,没跑了。
  12. 【数据结构】最小生成树(Prim算法,普里姆算法,普利姆)、最短路径(Dijkstra算法,迪杰斯特拉算法,单源最短路径)
  13. 谷歌 浏览器二维码显示异常,形成的二维码无法被扫描
  14. 如何实现vue表单验证cron表达式?【亲测有效】
  15. IPv6下DHCPv6协议(RFC3315)详细介绍
  16. 2.给 Proxmox VE换源
  17. CF786A - Berzerk
  18. Java实验7《字符串和文本I/O 》
  19. 《编译原理》控制流语句 if 和 while 语句的翻译 - 例题解析
  20. python之开三次方根的计算

热门文章

  1. Spring Boot 异常处理,值得学习!
  2. 微信开始收费,一年130元起!?
  3. 阿里开源代码质量检测工具!
  4. 2个月面了鹅厂的5个部门,心态差点奔溃了......
  5. 面试官:设计一个对外的接口,需要考虑那些安全问题?我有点懵...
  6. 台湾台积电为华为两肋插刀,扛住压力,单日损失1426亿元
  7. oid 值 内存使用_JVM:对Java内存模型的理解,你还停留在面试阶段吗?
  8. linux初级之总结复习
  9. 安装及创建python虚拟环境
  10. 线性回归公式推导与代码实现