安裝及建置 Julia 開發環境實戰教學
使用 Jupyter Notebook, Atom IDE, JuliaBox 進行開發
寫在開始之前
本文說明的是在本機實體環境,手把手安裝及建置Julia開發環境的方法。若想要在3分鐘內使用Docker容器安裝及建置,歡迎參考「安裝及建置 Julia 開發環境實戰教學-Docker篇」。
Julia 簡介
Julia 是一個新生代的程式語言,專案最早是從 2009 年開始,並在早期就獲得 MIT Lincoln Laboratory 以及其他單位的贊助支持。
目前最新的穩定版本是在 2019 年 1 月推出的 1.1.0。
Julia 擁有眾多程式語言的特性與優點,號稱跟 Python 一樣易學,但擁有 C 的執行高效能。Julia 目前已經被大量使用在各個領域中,包括了現今熱門的資料科學。
Julia (Open Source)
下載
JuliaLang.org 提供的 open source Julia 可以從官網下載,選擇自己適合的版本點選下載。本文介紹將以 Windows 10 環境為主要範例。
進入 JuliaLang 官網 (https://julialang.org/) 首頁,可點 Download 連結進入下載頁面。
進入下載頁面後,依自己的作業系統版本,下載相對應的版本。以下範例以 Windows 10 64 位元版本為例,下載 64 位元版本的自我解壓縮安裝檔案。目前最新的穩定版本為 1.1.0 版,下載檔案大小約 50MB。
下載頁面也提供原始碼下載,也可以透過編譯原始碼的方式進行安裝。
安裝
Windows 安裝很簡單,執行安裝檔即可。
建議安裝完成後,在 Windows 環境變數下將 Julia 執行檔路徑 (e.g. D:\Julia-1.1.0\bin) 加到環境變數下,未來若要從命令提示字元下啟動 Julia 的話比較方便。
維持 Create Start Menu folder and shortcut 勾選。
多版本並存
Julia 可允許多版本 (包含 Julia 和 JuliaPro) 同時安裝在系統上,方便是在開發或研究時使用不同的版本及環境來運行,安裝套件時也會依所啟動的 Julia 版本,安裝在不同的路徑下,不會衝突。
以在 Windows 作業系統為例,環境資訊會存放在 c:\使用者\<登入帳號>\.julia 路徑下。在 environments 路徑下,可以看到本機安裝了兩個版本的 Julia。
不同版本的環境資訊,則記錄在 Manifest.toml 和 Project.toml 檔案中。
啟動
安裝完成後,可以透過下列三種方式啟動 Julia (以 Windows 為例):
- 從開始選單
- 從桌面捷徑 (若在安裝時有勾選要新增桌面捷徑)
- 從命令提示字元
啟動進入 Julia REPL 命令列模式,輸入下列指令顯示系統資訊。
versioninfo()
macOS 安裝完成後,可以從應用程式中啟動。
Linux 版本的安裝,將編譯好的下載檔解壓縮,並建立 Symbolic Link (Optional) 即可執行啟動 Julia。
退出
輸入下列指令可退出 Julia REPL 命令提示字元,關閉視窗:
exit()
開發工具
Julia 程式的開發,基本上在任何文字編輯器上都可以進行,但是有好的工具輔助能讓開發工作事半功倍。
在 Julia 官網上提供了幾個推薦的開發工具。下面將簡單介紹如何建置 Julia 開發環境,以 Jupyter Notebook 和 Juno 為範例。
IJulia + Jupyter Notebook
下列說明是介紹在 Julia 環境下安裝 Jupyter。如果原先在電腦上就有在 Python 環境安裝 Jupyter,而且想要使用既有安裝版本的話,請參考下段說明 。
- 透過 Pkg (Package Management) 安裝 IJulia。
julia> using Pkg
julia> Pkg.add("IJulia")
2. 安裝完成後,透過 using 命令使用 IJulia。呼叫 notebook() 啟動 Jupyter Notebook。
julia> using IJulia
[ Info: Precompiling IJulia [7073ff75-c697-5162-941a-fcdaad2a7d2a]julia> notebook()
install Jupyter via Conda, y/n? [y]:
在套件安裝完第一次使用時,套件都需要經過 precompile 的過程,需要花一些時間。但下一次使用時若版本相同、或是沒有重新 build,就不會再有 precompile 過程。
在這邊有一點要注意的地方是,第一次透過呼叫 notebook() 啟動 Jupyter Notebook 時,Julia 會詢問是否要透過 Conda 安裝 Jupyter,回答 y 的話,Conda 會在 Julia 環境下安裝新的 Jupyter。
將 IJulia 安裝在既有的 Jupyter 上
在安裝 IJulia 之前,必須先指定環境變數到既有安裝的 Jupyter 路徑 (e.g. D:\Python36\Scripts) 及執行檔。
ENV["JUPYTER"]="D:\\Python36\\Scripts\\jupyter.exe"
再執行安裝及開啟 Jupyter Notebook,就不需再安裝另一份 Jupyter 在 Julia 環境中。
julia> ENV["JUPYTER"]="D:\\Python36\\Scripts\\jupyter.exe"
"D:\\Python36\\Scripts\\jupyter.exe"julia> using Pkg
julia> Pkg.add("IJulia")
julia> using IJulia
julia> notebook()
使用既有的 Jupyter,開啟時可以不需要再透過 REPL 開啟,可直接在命令提示字元下執行 jupyter notebook 指令開啟。
開啟 Notebook 檔案開發 Julia
選擇要開啟的 Julia Kernel,新增一個新的 Notebook 檔案。
測試 Julia 正常執行。
Atom IDE + Uber Juno
另一個推薦的 Julia 開發環境是在 Atom IDE 上安裝 Uber Juno 套件。Atom IDE 是一個免費開源、具備高度客製化特性的開發工具,也可從社群取得許多擴充功能。
- 從 https://atom.io/ 下載並安裝 Atom IDE。
- 開啟 Atom 後,進入Settings。
3. 點 +Install,輸入 Juno 搜尋,搜尋到 uber-juno 並安裝。
更多有關 Juno 的介紹可參考官網 http://junolab.org/
4. 安裝成功後啟動 Atom IDE 整合開發環境,可在 Atom 環境下進行開發、執行、除錯、管理專案等功能。
Julia Computing 的 JuliaPro
Julia 幾位作者在 2015 年成立了 Julia Computing,提供 JuliaPro 版本。與 open source Julia 不同的地方在於,JuliaPro 提供免費及付費版本,付費版本並提供企業技術支援服務,並內建安裝 JuliaPro 所支援的套件 (包含 Juno),以及其他進階的功能。
下載及安裝
- 從 JuliaPro 產品網頁 https://juliacomputing.com/products/juliapro.html 進入下載。目前穩定版本為 1.0.3.1。
- 要下載 JuliaPro,必須要有 Julia Computing 帳號,如果是第一次造訪,可先申請帳號後登入。登入提供 4 種不同的方式選擇。
3. 下載後進行安裝,JuliaPro 預設的套件伺服器為 Julia Computing 所提供,並且會同時一併安裝支援套件,所以整個安裝後的空間相當大,約佔 970MB。
4. 安裝後會自動在桌面上建立捷徑,點擊開啟,JuliaPro 會載入隨附安裝的 Atom + Juno 開發環境。
網路上有使用者反應, JuliaPro 1.0 後的版本,在效能上大幅落後 open source Julia,所以目前建議若非有付費功能需求,使用開源的版本是比較好的選擇,在版本的更新上也會比較快。
JuliaBox: 在雲端執行 Julia
JuliaBox 是 Julia Computing 提供的雲端服務,有免費和付費計劃可選擇。
免費和付費的差異在於可使用資源的多寡,還有就是未來付費版本將會提供 GPU 做為運算加速資源。詳細資費及資源比較可參考 https://juliabox.com/ 網頁資訊。
- 使用 JuliaBox 需使用 Julia Computing 帳號登入,如果是第一次造訪,可先申請帳號後登入。
- 登入成功後,可以 Launch 新的 Notebook。
2. Customize 可調整要使用的 CPU RAM 等資源。
3. Launch 進入 Notebook 後,操作介面跟本機的 Jupyter Notebook 相同,也可以選擇不同版本的 Julia Kernel。
結語
Julia 的安裝,以及開發環境的設定難度不高,但是若要建構一個符合 production 需求的環境仍需要詳細規劃多版本的管理、套件安裝及版本管理 (Package Management)、開發環境管理等議題。在下一篇分享中,將為大家深入介紹 Julia 的套件管理。
想要用更進階的方式建置環境嗎?記得還可以用Docker來快速達成。