天天看點

Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境

近日看到R語言中文社群上一篇關于Windows的Linux子系統搭建Python和R環境的文章,加上蝦神也在宣傳,于是我也動手來玩一玩。之前很早就了解過WSL,但一直沒動手使用,趁機來學習一下。

1 Windows Subsystem for Linux(WSL)簡介

簡介一下WSL。

Windows Subsystem for Linux(簡稱WSL)是一個為在Windows 10上能夠原生運作Linux二進制可執行檔案(ELF格式)的相容層。它是由微軟與Canonical公司合作開發,目标是使純正的Ubuntu 14.04 "Trusty Tahr"映像能下載下傳和解壓到使用者的本地計算機,并且映像内的工具和實用工具能在此子系統上原生運作。WSL提供了一個微軟開發的Linux相容核心接口(不包含Linux代碼),來自Ubuntu的使用者模式二進制檔案在其上運作。該子系統不能運作所有Linux軟體,例如那些圖形使用者界面,以及那些需要未實作的Linux核心服務的軟體。不過,這可以用在外部X伺服器上運作的圖形X Window系統緩解。此子系統起源于命運多舛的Astoria項目,其目的是允許Android應用運作在Windows 10 Mobile上。此功能元件從Windows 10 Insider Preview build 14316開始可用。——維基百科

2 WSL安裝

在開始菜單裡搜尋"Microsoft Store"。

Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境

接着在"Microsoft Store"中搜尋"Linux"。

Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境

從中選擇一個Linux的發行版安裝即可。我選的是Ubuntu 18.04 LTS,個人比較熟悉Ubuntu,同時也想試一下18.04版本。點選擷取後,"Microsoft Store"就會自動下載下傳安裝。當然安裝完後,你可以把它固定到開始螢幕比較友善。

Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境

當然現在啟動WSL是失敗的,因為還得在Windows中啟用該功能。依舊是在開始菜單搜尋Windows功能。

Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境

接着打鈎"适用于Linux的Windows子系統"。

Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境

這個時候就能愉快地開啟Ubuntu系統了(當然一般上面勾選完需要重新開機系統,這類就跳過了)。

Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境

如果第一次啟動的話,會要求你建立一個Linux的賬戶和密碼,熟悉Linux系統的同學應該很清楚了,這就不多說了,如果不熟悉的,建議去學習一下Linux的基礎管理和操作。這樣就愉快地可以開始在Windows上玩耍Linux系統了。另外這個系統其實是安裝在如下的位址内,這樣子後期管理時也可以快速上手使用。

C:Users你的使用者名AppDataLocalPackagesCanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgscLocalStaterootfs

同時WSL直接将你的其他磁盤挂載到了mnt檔案夾下面,可以直接通過/mnt/d通路。

cd /mnt/f
ls -l           
Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境

如果覺得下載下傳速度略慢的話,完全可以更新apt源檔案來提速。可以看到在/etc/apt下面的sources.list

Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境

我們這裡在自己的F盤建立了一個WSL的工作空間,可以用來做各種相關的事情,譬如這裡在更新apt源檔案前,先備份到這個空間内。需要提醒下,我這裡都先運作了sudo su,以root賬戶執行。是以不需要在指令前加sudo,如果不是root賬戶,請加sudo。

mkdir /mnt/f/WSLworkspace
cp /etc/apt/sources.list /mnt/f/WSLworkspace/sourcesbackup.list           
Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境
Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境

而替換源通常使用vim或者gedit來操作,這個時候知道我們的系統安裝路徑的好處就來了。隻需要在Windows上打開對應檔案夾下的sources.list(建議用Notepad++),複制粘貼就可以。給出幾個源。

清華

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse

deb-src

bionic-updates main restricted universe multiverse

bionic-backports main restricted universe multiverse

bionic-security main restricted universe multiverse

bionic-proposed main restricted universe multiverse

阿裡源

http://mirrors.aliyun.com/ubuntu/

中科大

https://mirrors.ustc.edu.cn/ubuntu/

接着就可以進行更新軟體了。

sudo apt-get update
sudo apt-get upgrade           

3 WSL搭建資料科學環境

接下來就是搭建資料科學環境(Python和R)了。這裡推薦安裝Anaconda,當然如果想從頭開始安裝也是允許的。先去

Anaconda 官網

找到最新的版本。我Windows上基本都是Python2,是以在這個版本上主要以Python3為主,就是圖中紅框的。下載下傳連結如下。

Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境
https://repo.continuum.io/archive/Anaconda3-2018.12-Linux-x86_64.sh

接着用wget下載下傳,可以改變路徑。

wget -P /mnt/f/WSLworkspace https://repo.continuum.io/archive/Anaconda3-2018.12-Linux-x86_64.sh            

接下來就是安裝Anaconda3。

bash /mnt/f/WSLworkspace/Anaconda3-2018.12-Linux-x86_64.sh           

中間可以選擇安裝位置,這裡預設安裝在/root/Anaconda3,接着就等待安裝結束了。安裝過程中會提示是否将Anaconda3添加到環境變量,選yes。安裝完會提示是否要安裝Microsoft VS code,我建議可以不裝。接着再Linux指令行裡敲入。

jupyter lab --allow-root           

關于這個的配置有一些參考的内容見後面的連結,這裡不詳細展開,如果以root賬戶運作的話必須加上--allow -root。

接着在Windows浏覽器裡通路

http://localhost:8888/lab?

Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境

除了Python3,我們還推薦裝個R,用于混合程式設計。這個時候畢竟本機已經安裝了原生R,我決定在Linux上搭建一個Microsoft R Open(MRO)。同樣是打開

MRO官網
Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境

利用wget下載下傳MRO。

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

由于我用的Ubuntu18.04,還需要安裝libpng12庫。

wget -P /mnt/f/WSLworkspace https://mirrors.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.deb
dpkg -i libpng12-01_1.2.54-1ubuntu1_amd64.deb           

定位到MRO下載下傳路徑。

cd /mnt/f/WSLworkspace
tar -xf microsoft-r-open-3.5.1.tar.gz
cd microsoft-r-open
./install.sh           

接着需要看MRO和MKL的許可,先按回車看許可,接着按q鍵退出,按y進行安裝。

Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境

R安裝好後,還需要配置到jupyter中。首先需要先安裝devtools,Ubuntu 18.04還需要先安裝libssl。

apt-get install libssl-dev           

接着進入到R中。

install.packages('devtools')
library(devtools)
install_github('IRKernel/IRkernel')           

這邊發現IRkernel裝不上,還需要裝libcurl。

apt-get install libcurl4-openssl-dev           

最後發現github連接配接老有問題。

Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境

Github也有一個相同的

issues

,可以安裝離線包,在github上點選clone or download,下載下傳到檔案夾中。

devtools::install('/mnt/f/WSLworkspacre/IRkernel-master')           

終于安裝成功。最後在R裡,再敲入如下指令。

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

大功告成。

Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境

運作一波代碼。

Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境
Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境
Windows的Linux子系統搭建資料科學環境1 Windows Subsystem for Linux(WSL)簡介2 WSL安裝3 WSL搭建資料科學環境

雖然R語言中文社群給出了比較完整的教程,但是具體搭建過程中,還是無數的坑。希望大家也是動手實踐為主。最近發現好多需要在Linux系統上安裝的包和庫,是以有這個環境非常地好。

參考連結:

windows10 Linux子系統檔案目錄 再見虛拟機!在Win10中使用Linux版本的R和Python Ubuntu 18.04 軟體源修改成國内源(檔案或界面形式) 設定 jupyter notebook 可遠端通路 Running as root is not recommended. Use --allow-root to bypass Github Issues:Installation of packages using Devtools Fails - error setting certificate error setting certificate verify locations, install_github 無法安裝github上的R包:error setting certificate verify Github Issues:Installation failed: Timeout was reached during installation of IRkernel

繼續閱讀