CentOS 服務器安裝 IJulia

使用國內鏡像

由於 Julia 的官方的 Registry 在 Github 上, 但是下載一個 package 常常遇到網速不穩定的問題. 國內的 Julia 鏡像有中科大浙大, 我們只需要將鏡像網址增加到 Registry 即可, 按 ] 鍵進入 pkg 模式, 輸入命令:

(v1.3) pkg> registry add https://mirrors.zju.edu.cn/julia/registries/General.git/

或者

(v1.3) pkg> registry add https://mirrors.ustc.edu.cn/julia/registries/General.git/

解決報錯

如果出現以下問題

(v1.3) pkg> registry add https://mirrors.zju.edu.cn/julia/registries/General.git/
   Cloning registry from "https://mirrors.zju.edu.cn/julia/registries/General.git/"
ERROR: failed to clone from https://mirrors.zju.edu.cn/julia/registries/General.git/, error: GitError(Code:ERROR, Class:Net, HTTP parser error: stream ended at an unexpected time)

可能是網絡暫時不佳, 需要重新運行命令

如果出現以下提示

(v1.1) pkg> registry add https://mirrors.zju.edu.cn/julia/registries/General.git/
   Cloning registry from "https://mirrors.zju.edu.cn/julia/registries/General.git/"
[ Info: registry `General` already exist in `~/.julia/registries/General`.

這說明鏡像已經存在了

安裝(add)並測試(test) IJulia

(v1.3) pkg> add IJulia
  Updating registry at `~/.julia/registries/General`
  Updating git-repo `https://github.com/JuliaRegistries/General.git`
 Resolving package versions...
...
install.jl
ERROR: LoadError: Blosc not installed properly, run Pkg.build("ZMQ"), restart Julia and try again
...
ERROR: LoadError: Failed to precompile ZMQ [c2297ded-f4af-51ae-bb23-16f91089e4e1] to /root/.julia/compiled/v1.3/ZMQ/CaaO6_xeGhA.ji.
...
ERROR: LoadError: LoadError: Failed to precompile IJulia [7073ff75-c697-5162-941a-fcdaad2a7d2a] to /root/.julia/compiled/v1.3/IJulia/nfu7T_xeGhA.ji.
...
ERROR: Package IJulia errored during testing

Oops… 報錯了, 不過不要緊, 報錯內容已經告訴你解決的辦法 Pkg.build("ZMQ"), restart Julia and try again

正常情況下, 你按照提示操作再編譯 ZMQ, 重啓 Julia, 重新編譯 IJulia,並測試

julia> Pkg.build("ZMQ")
  Building ZMQ → `~/.julia/packages/ZMQ/ABGOx/deps/build.log`
false
(v1.3) pkg> build IJulia
  Building Conda ──→ `~/.julia/packages/Conda/kLXeC/deps/build.log`
  Building ZMQ ────→ `~/.julia/packages/ZMQ/ABGOx/deps/build.log`
  Building MbedTLS → `~/.julia/packages/MbedTLS/a1JFn/deps/build.log`
  Building IJulia ─→ `~/.julia/packages/IJulia/cwvsj/deps/build.log`
(v1.3) pkg> test IJulia
   Testing IJulia
    Status `/tmp/jl_QaDYDI/Manifest.toml`
...
Testing IJulia tests passed

解決報錯

  1. 如果在 build ZMQ過程中出現以下報錯
julia> Pkg.build("ZMQ")
  Building ZMQ → `~/.julia/packages/ZMQ/ABGOx/deps/build.log`
┌ Error: Error building `ZMQ`: 
│ ┌ Warning: platform_key() is deprecated, use platform_key_abi() from now on
│ │   caller = ip:0x0
│ └ @ Core :-1
│ ERROR: LoadError: Hash Mismatch!
│   Expected sha256:   cc9090ba35713d59bb2f7d7965f877036c49c5558ea0c290b0dcc6f2a17e489f
│   Calculated sha256: d6256c33753fa4f3f27d0d5be45f0a3d986379c3f4fcc805e6275209c2e78e02
│ ...
└ @ Pkg.Operations /builddir/build/BUILD/julia/build/usr/share/julia/stdlib/v1.3/Pkg/src

這可能是由於內存不足造成的, 所以增加虛擬內存試試, 參考linux編譯源碼時內存不足的解決辦法, 然後重新編譯 ZMQ, 重啓 Julia 就能解決了.

  1. 編譯完 ZMQ 之後如果沒有再編譯 IJulia會報錯
(v1.3) pkg> test IJulia
   Testing IJulia
    Status `/tmp/jl_r5nwfW/Manifest.toml`
  [b99e7846] BinaryProvider v0.5.6
...
install.jl
ERROR: LoadError: IJulia not properly installed. Please run Pkg.build("IJulia")
...
ERROR: LoadError: LoadError: Failed to precompile IJulia [7073ff75-c697-5162-941a-fcdaad2a7d2a] to 
...
ERROR: Package IJulia errored during testing

報錯信息會告訴你需要重新 Pkg.build("IJulia"), 運行命令之後重新 test 沒有報錯就安裝上了

打開 notebook

bash 終端使用命令 which jupyter 查找 jupyter 路徑, 例如我服務器上運行的結果爲

/usr/local/bin/jupyter

如果沒有安裝過 jupyter , 可以參考CentOS server 搭建雲端 jupyter notebook

然後在 Julia REPL 中先指定 JUPYTER 路徑(初次使用需要), 然後使用 using IJulia 命令和 notebook() 函數就可以了

julia> ENV["JUPYTER"] = "/usr/local/bin/jupyter"
"/usr/local/bin/jupyter"

julia> using IJulia

julia> notebook()
[ Info: running setenv(`/usr/local/bin/jupyter notebook`,["PATH=...

由於我在安裝 IJulia 之前提前啓動了 jupyter notebook, 直接登陸就可以使用 Julia Kernel
JN_Julia

創建一個 xxx.ipynb, 開啓 julia 學習之路~
更多安裝信息參考: https://github.com/JuliaLang/IJulia.jl

tips

notebook() 相當於在操作系統命令行運行 jupyter notebook, 該函數可接受兩個參數

  • dir 用於指定 notebook 的工作目錄
  • detached=true 用於把 notebook 放在後臺運行, 結束 notebook 進程來終止程序(默認 detached=false, 按 ctrl+c 或者退出 Julia REPL 來終止 notebook)

IJulia 不使用 IPython 中的 %magic 魔法函數, 有些可用 IJulia.somefunction(...) 代替, 有些直接使用 Julia 宏、字符串宏和函數就能實現 IPython 魔法函數的作用。
例如內置的 cd()pwd()readdir() 等函數用於文件路徑操作, 加載 jl 文件內容到 jupyter cell 可使用 IJulia.load()函數, 若需要從網絡上加載 jl 內容, 需要使用 IJulia.load(download("url")).

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章