首頁>技術>

“工欲善其事,必先利其器”,Data Science資料科學受到越來越多的關注,想要簡單上手寫幾行Python程式碼不難,難的是系統化的開發和持續整合/持續部署。作為長遠開發使用考慮,先就Data Science開發環境搭建做一些探索經驗的積累。

其實使用Win/Mac/Linux都能進行資料工作的開發,但基於Linux的開發方式對後期真正生產環境的整合部署很有幫助,於是我們不論在哪個系統上寫程式碼,還是希望最終能基於Linux環境開發。對於大部分使用Win的同學,我們選擇基於Linux開發會有幾種方式:

Linux單系統——只能單用總有不方便Win+Linux雙系統——切換系統需要重啟且切換麻煩Win+虛擬機器Linux——虛擬機器資源消耗大且對硬體資源要求高Win+內建WSL——佔用資源較少可隨意重灌,但有一些限制

所以在現在Win10的最新系統上,還是建議使用Win+內建WSL的方式來搭建基於Linux的資料科學開發環境。以實現在Window上編寫、在Linux環境除錯並適配部署應用的一體化開發。

Win10安裝WSL

WSL是“Windows Subsystem for Linux”的縮寫,是Win系統的Linux子系統,其作為Windows元件搭載在Windows10週年更新(1607)後的Windows系統中。在最新版系統上安裝很簡單,在Powershell(管理員)命令窗口裡輸入:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

開啟Win10應用商店,搜尋“ubuntu”並選擇Ubuntu 18.04LTS,如下圖所示點選"安裝":

啟動後提示設定使用者名稱和密碼即可以用起來了。也用同學希望在WSL用圖形介面,或是改造SSH登陸顯示介面的可以簡單搜到,我們這裡希望僅使用WSL作為各種開發環境的安裝,以適配各種IDE或編輯器對接開發環境聯調程式碼。WSL下的中文字元顯示,需要安裝:

sudo apt install fonts-noto-cjkAnaconda資料科學工具包的安裝

資料科學研究多數構建在基於Python的開發環境(當然也有使用R開發以及面向大資料處理的Scala開發),而整合多種Python資料科學包的Anaconda可以為開發研究帶來方便,也是業內常用的資料開發整合環境。

在WSL裡,根據https://repo.continuum.io/archive/列表裡的Anaconda版本(注意不同的Anaconda版本對應不同的Python版本以及整合包裡的各packages版本),選擇合適的版本如Anaconda3-2019.10-Linux-x86_64輸入如下命令:

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

按提示步驟即可完成Anaconda整合環境在WSL下的安裝。

Python開發IDE選擇

如果把開發IDE和程式碼編輯器作為一起考慮,首選PyCharm+VSCode+Jupyter Notebook的開發方式來進行資料科學的資料探索工作,他們各自有各的優勢:

Jupyter Notebook便於互動式想法試驗適用於樣本資料探索和模型試驗VSCode便於簡單程式碼編輯PyCharm整合環境便於工程專案debug開發

所以作為資料科學綜合開發環境,選擇分別安裝Jupyter Notebook、VSCode和PyCharm來進行程式碼編輯、debug測試、原型試驗和專案開發。

Jupyter Notebook互動式開發

安裝好Anaconda後在WSL就可以啟動Jupyter Notebook了:

jupyter notebook # 執行jupyter

命令提示給出的連結即可在Win10瀏覽器裡開啟,就可以開始Jupyter Notebook的開發實驗了:

當然程式碼檔案的儲存也是在WSL裡剛開啟Jupyter的目錄裡,而WSL其實可以和Win10目錄共享訪問,其目錄是在/mnt/c對應Win10的C盤目錄。

VSCode程式碼編輯

VSCode作為輕量級程式碼編輯器是十分輕便優秀的,使用VSCode編輯Python程式碼需要連線WSL環境下的Anaconda和Python,需要配置讓VSCode配合WSL開發環境執行起來

1.安裝VSCode,下載地址https://code.visualstudio.com/

2.在VSCode中安裝Code Runner外掛和Remote-WSL外掛(如下圖所示),外掛裝好後右上角會有一個三角形圖示,這個就是Code Runner編譯執行程式的按鈕

3.把VSCode的預設終端從Power Shell改成為WSL。在VSCode介面按F1會彈出一個搜尋框,輸入Open Settings(JSON)回車就到設定介面,在設定介面中填入

"terminal.integrated.shell.windows":"C:\\\\Windows\\\\System32\\\\wsl.exe",

4.設定外掛Code Runner。由於Code Runner預設的設定是為Windows準備的,所以必須把這些在Windows下的編譯程式碼改成linux下的編譯程式碼。方法同上一步,在Open Settings (JSON)中加入以下程式碼:

{ "code-runner.clearPreviousOutput": true, "code-runner.ignoreSelection": true, "code-runner.runInTerminal": true, "code-runner.saveAllFilesBeforeRun": true, "code-runner.executorMap": { "cpp": "g++ $fileName -lpthread -lboost_system -lboost_filesystem -o $fileNameWithoutExt && ./$fileNameWithoutExt", "python": "python3 -u ./$fileName"},

設定儲存後,整個VSCode對接WSL環境就搭建完成了,下方的Terminal裡面就是Ubuntu終端。如果程式碼要編譯,則點選一下右上Code Runner那個三角形按鈕,就可以編譯並運行了。

PyCharm專案開發

PyCharm常用於專案型別的開發,相比VSCode的程式碼編輯功能強大更多,相比Jupyter Notebook的互動式方式更像一種解釋編譯執行的整合式IDE。使用WSL在PyCharm需配置遠端直譯器,完成對接在Linux環境的開發。

1.開啟Add Python Interpreter對話方塊。在Windows下配置路徑為File | Settings,在左邊區域裡點選WSL,例如下圖所示配置Interpreter的路徑:

2.如果已經在具體專案中,也可以通過路徑File | Settings | Project <project name> | Project Interpreter點選配置圖示選擇Add後,再配置選擇合適的Python直譯器,並會列出其預設的庫包版本如下圖所示:

點選ok配置完成後,就可以在PyCharm裡開發專案,並基於Linux環境除錯程式碼,所開發程式碼可以更順利部署在Linux線上服務環境,當然如果希望DevOps更加一體化,可以考慮使用docker來完成開發環境的部署打包,這就需要WSL+docker的協同操作,這裡因為WSL有些許限制還是需要配合Win版docker進行如有需要下回再展開介紹討論。

結語

至此,我們搭建了便於資料實驗的一體化資料科學開發環境,完成了基於WSL的Jupyter Notebook/VSCode/PyCharm的程式碼開發環境配置,可以更好的支援Python程式碼的開發以完成資料分析、模型訓練、調參調優等一系列的迭代開發debug等工作,希望所介紹內容對大家實踐資料科學實驗有所幫助。

參考資料

Win10+WSL+VS Code搭建Ubuntu開發環境 https://zhuanlan.zhihu.com/p/57882542基於SSH除錯的WSL+PyCharm配置方式 https://zhuanlan.zhihu.com/p/49227132Configure a remote interpreter using WSL https://www.jetbrains.com/help/pycharm/using-wsl-as-a-remote-interpreter.html

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • SpringBoot : 給初學者的實用配置指引