原文首發於個人站點:【Scala 教程】Jupyter notebook 中配置 Scala 交互式編程環境
微信公衆號:【DreamHub】
背景
對於初學者入門 Scala 編程,如果在學習過程中需要編寫一些代碼片段來實操 Scala 語法的時候是怎麼測試的呢?對於菜雞的我起初只想到了兩種方法:
- Scala Terminal:在終端中進行交互。
- IntelliJ IDEA:IDE中編寫代碼片段。
在實踐的時候就慢慢發現上述兩種的方法的弊端:Scala Terminal 中測試語法沒有問題但不能保存語法介紹和說明,遺忘之後不能再次查詢;IDEA 非常強大但對於初學者測試代碼片段就有點殺雞用牛刀的感覺(PS:打開IDEA就寫一小段代碼也太浪費電腦資源了😂)!因此是否存在高性價比
的工具來解決這問題呢?答案是有的!
類比於python的學習,是否想起有一款 jupyter notebook
交互編程環境呢?Jupyter notebook中編寫python腳本實時交互可視化太爽了,如果jupyter notebook
能支持 scala
語法多麼完美啊!心裏一想然後一搜,臥槽!真有!開源大佬牛鼻!!!傳送門直達~ 本文就介紹如何在jupyter notebook
中配置 scala
交互式編程環境。
配置流程
- 安裝
scala
至於如何安裝scala 可以參考另一篇博文:【Scala教程】Scala 簡介與安裝 anaconda
安裝jupyter notebook
默認已配置好python
開發環境,沒有安裝的同學可以自行搜索教程安裝哦!- 配置
scala kernel
本文選用的是almond
,當然也有其它可選擇的kernel,可以根據自己的需求自行選擇哦!
windows 安裝 almond
-
查看
scala
版本,例如我安裝的是scala 2.13.1
:
在源庫中搜索發現almond v0.8.2
已支持scala 2.13.1
,Release version:
-
創建文件夾
almond
並在終端內打開。 -
在終端中設置
scala
和almond
版本;> set SCALA_VERSION=2.13.1 > set ALMOND_VERSION=0.9.1
-
在終端中通過
coursier
下載launcher
,官網命令會報錯:> bitsadmin /transfer downloadCoursierCli https://git.io/coursier-cli "%cd%\coursier" > bitsadmin /transfer downloadCoursierBat https://git.io/coursier-bat "%cd%\coursier.bat" > .\coursier bootstrap -r jitpack -i user -I user:sh.almond:scala-kernel-api_%SCALA_VERSION%:%ALMOND_VERSION% sh.almond:scala-kernel_%SCALA_VERSION%:%ALMOND_VERSION% -o almond > .\almond --install
-
終端中安裝
almond
.\almond --install
-
終端中查看已安裝kernel:
jupyter kernelspec list
-
打開 jupyter notebook 或者 jupyter lab 發現都可以使用scala kernel;
-
安裝完成後可以刪除
almond
文件夾;
安裝過程參考官網:https://almond.sh/docs/quick-start-install
填坑指南
-
bitsadmin /transfer downloadCoursierCli https://git.io/coursier-cli "%cd%\coursier"
命令執行報錯:
unable to add file - 0X80070057
:
原因:bitsadmin
命令找不到相對路徑!
方法:修改命令參數爲絕對路徑可以下載!例如我的路徑:bitsadmin /transfer downloadCoursierCli https://git.io/coursier-cli "d:\almond\coursier"
-
.\coursier bootstrap ***
命令報錯;
原因與上述錯誤類似。
方法:修改命令爲版本號: -
.\coursier bootstrap ***
報錯:error fetching artifacts ***
原因:文件下載校驗碼錯誤,重新下載對應的文件。
方法:打開下載錯誤的文件刪除重新執行命令下載!
吐槽下載速度真是慢,windows配置問題真是多,折騰了一下午,心累!