LoginSignup
6
13

More than 5 years have passed since last update.

WindowsでJuliaをJupyter notebookから使えるようにするまで

Last updated at Posted at 2018-05-07

はじめに

 Windows環境において、Julia言語をインストールし、Jupyter notebookで使用可能にする方法については、様々な場所で解説記事が見られるが、思いのほか苦戦したので備忘録としてまとめた。

導入環境

  • OS:Windows7 Home Premium 64bit
  • Anaconda3をインストール済みであり、Jupyter notebookは使用可能な状態

導入方法

Juliaのインストール

 最新版のJuliaを公式サイトからダウンロードし、インストールする。現時点ではv0.6.2が最新である。インストールしたディレクトリをJuliaDirとする。

環境変数設定

 コントロールパネル/システム/システムの詳細設定/環境変数から設定を行う。ユーザー変数とシステム変数の2つがあり、全ユーザーに対して設定したいのであれば、システム変数に対して設定を行う。以下、システム変数に対する設定を記載する。

  • 新規の変数として以下の2つを作成する。

変数名:JUPYTER 変数値:AnacondaDir\Scripts\jupyter.exe
変数名:JULIA_PKGDIR 変数値:JuliaPkgDir

  • システム変数に既に設定されているPathの最後尾に、新規作成した変数名を%で囲んで追加する。なお、変数は;で区切ること。

%追加済みのPath%; %JUPYTER%; %JULIA_PKGDIR%

ここで、AnacondaDirはAnaconda3がインストールされたディレクトリ、JuliaPkgDirはJuliaのパッケージをインストールするディレクトリである。JuliaPkgDirは予め作成しておくとよい。
 私が主に参照した記事では、変数を新規作成せずともPathに追加するだけで良いとの内容が多かったが、私の場合は上記のようにしなければ設定がうまくできなかった。
 また、Juliaをコマンドプロンプトから呼び出せるようにするためには、システム変数のPathの最後にJuliaDirを追記すればよい。これに関しては、上記のように新規に変数を作成しなくても動作確認ができた。

パッケージの初期インストール

 Juliaを管理者権限で起動し、Pkg.init()を実行する。このコマンドは、JuliaPkgDirにパッケージデータをダウンロードし、Pkg系コマンドを使用可能な状態にするためのものである。この作業は最初の一回で良い。

julia> Pkg.init()
INFO: Initializing package repository JuliaPkgDir\v0.6
INFO: Cloning METADATA from https://github.com/JuliaLang/METADATA.jl

上記の表示で終了すればOK。環境変数で設定したJuliaPkgDir内に、v0.6というディレクトリが作成され、パッケージがインストールされている。なお、以下のエラー

ERROR: GitError(Code:ECERTIFICATE, Class:OS, user cancelled certificate check: )

が生じた場合は、リンク先Easy fixDownloadボタンから修復ツールをインストールし、実行する必要がある。この問題は、julia-git-errorに挙げられている。TLS 1.1またはTLS 1.2の修復が必要である模様。修復を行った後、Pkg.init()を実行すればよい。
 また、環境変数設定がうまくいっていない場合、以下のように表示され、ユーザーディレクトリ直下に.julia\v0.6というパッケージ用ディレクトリが作成される。

INFO: Initializing package repository C:\Users\username\.julia\v0.6`

パッケージIJuliaのインストール

 Jupyter notebookでJuliaを使用するために、IJuliaをインストールする。JuliaでPkg.add("IJulia")を実行する。以下は私のPCでの実行例である。

julia> Pkg.add("IJulia")
INFO: Cloning cache of BinDeps from https://github.com/JuliaLang/BinDeps.jl.git
INFO: Cloning cache of BinaryProvider from https://github.com/JuliaPackaging/BinaryProvider.jl.git
INFO: Cloning cache of Compat from https://github.com/JuliaLang/Compat.jl.git
INFO: Cloning cache of Conda from https://github.com/JuliaPy/Conda.jl.git
INFO: Cloning cache of IJulia from https://github.com/JuliaLang/IJulia.jl.git
INFO: Cloning cache of JSON from https://github.com/JuliaIO/JSON.jl.git
INFO: Cloning cache of MbedTLS from https://github.com/JuliaWeb/MbedTLS.jl.git
INFO: Cloning cache of Nullables from https://github.com/JuliaArchive/Nullables.jl.git
INFO: Cloning cache of SHA from https://github.com/staticfloat/SHA.jl.git
INFO: Cloning cache of URIParser from https://github.com/JuliaWeb/URIParser.jl.git
INFO: Cloning cache of ZMQ from https://github.com/JuliaInterop/ZMQ.jl.git
INFO: Installing BinDeps v0.8.8
INFO: Installing BinaryProvider v0.3.0
INFO: Installing Compat v0.64.0
INFO: Installing Conda v0.7.1
INFO: Installing IJulia v1.8.0
INFO: Installing JSON v0.17.2
INFO: Installing MbedTLS v0.5.8
INFO: Installing Nullables v0.0.5
INFO: Installing SHA v0.5.7
INFO: Installing URIParser v0.3.1
INFO: Installing ZMQ v0.6.0
INFO: Building Conda
INFO: Building MbedTLS
Info: Downloading https://github.com/quinnj/MbedTLSBuilder/releases/download/v0.6/MbedTLS.x86_64-w64-mingw32.tar.gz to JuliaPkgDir\v0.6\MbedTLS\deps\usr\downloads\MbedTLS.x86_64-w64-mingw32.tar.gz...
Info: using prebuilt binaries
INFO: Building ZMQ
Info: Downloading https://github.com/JuliaInterop/ZMQBuilder/releases/download/v4.2.5+2/ZMQ.x86_64-w64-mingw32.tar.gz to JuliaPkgDir\v0.6\ZMQ\deps\usr\downloads\ZMQ.x86_64-w64-mingw32.tar.gz...
INFO: Building IJulia
INFO: Found Jupyter version 4.4.0: AnacondaDir\Scripts\jupyter.exe
INFO: Installing Julia kernelspec julia-0.6
Error executing Jupyter command 'kernelspec': [Errno 'jupyter-kernelspec' not found] 2
[InstallKernelSpec] Removing existing kernelspec in C:\Users\username\AppData\Roaming\jupyter\kernels\julia-0.6
[InstallKernelSpec] Installed kernelspec julia-0.6 in C:\Users\username\AppData\Roaming\jupyter\kernels\julia-0.6
INFO: Package database updated

kernelspecでエラーが生じているものの、その後の作業に特に影響はなかった。ここで重要なのは、

INFO: Found Jupyter version 4.4.0: AnacondaDir\Scripts\jupyter.exe

の表示である。環境変数JUPYTERを作成したことにより、すでにAnaconda3でインストールされていたJupyter notebookが使用されるようになっている。この環境変数設定を行っていない場合、Juliaは自動的にminiconda(Anaconda2相当)をインストールして、Jupyter notebookの設定を行ってしまう。また、環境変数設定がうまくいっていない場合も、同様にAnaconda2がインストールされ、以下のような表示になる。

INFO: Found Jupyter version 4.4.0: C:\Users\username\.julia\v0.6\Conda\deps\usr\Scripts\jupyter

 また、私の場合は、最初にPkg.add("IJulia")を実行した際、以下のようにエラーが生じた。

INFO: Building MbedTLS
Info: Downloading https://github.com/quinnj/MbedTLSBuilder/releases/download/v0.6/MbedTLS.x86_64-w64-mingw32.tar.gz to JuliaPkgDir\v0.6\MbedTLS\deps\usr\downloads\MbedTLS.x86_64-w64-mingw32.tar.gz...
・
・
・

===============================[ ERROR: MbedTLS ]===============================
LoadError: Could not download https://github.com/quinnj/MbedTLSBuilder/releases/
download/v0.6/MbedTLS.x86_64-w64-mingw32.tar.gz to JuliaPkgDir\v0.6\MbedTLS\
deps\usr\downloads\MbedTLS.x86_64-w64-mingw32.tar.gz while loading JuliaPkgDir\
v0.6\MbedTLS\deps\build.jl, in expression starting on line 40
================================================================================
INFO: Building ZMQ
Info: Downloading https://github.com/JuliaInterop/ZMQBuilder/releases/download/v4.2.5+2/ZMQ.x86_64-w64-mingw32.tar.gz to JuliaPkgDir\v0.6\ZMQ\deps\usr\downloads\ZMQ.x86_64-w64-mingw32.tar.gz...
・
・
・

=================================[ ERROR: ZMQ ]=================================
LoadError: Could not download https://github.com/JuliaInterop/ZMQBuilder/
releases/download/v4.2.5+2/ZMQ.x86_64-w64-mingw32.tar.gz to JuliaPkgDir\v0.6\
ZMQ\deps\usr\downloads\ZMQ.x86_64-w64-mingw32.tar.gz while loading JuliaPkgDir\
v0.6\ZMQ\deps\build.jl, in expression starting on line 30
================================================================================

INFO: Building IJulia
INFO: Found Jupyter version 4.4.0: AnacondaDir\Scripts\jupyter.exe
INFO: Installing Julia kernelspec julia-0.6
Error executing Jupyter command 'kernelspec': [Errno 'jupyter-kernelspec' not found] 2
[InstallKernelSpec] Removing existing kernelspec in C:\Users\username\AppData\Roaming\jupyter\kernels\julia-0.6
[InstallKernelSpec] Installed kernelspec julia-0.6 in C:\Users\username\AppData\Roaming\jupyter\kernels\julia-0.6

================================[ BUILD ERRORS ]================================
WARNING: MbedTLS and ZMQ had build errors.

 - packages with build errors remain installed in JuliaPkgDir\v0.6
 - build the package(s) and all dependencies with `Pkg.build("MbedTLS", "ZMQ")`
 - build a single package by running its `deps/build.jl` script
================================================================================

 パッケージMbedTLSおよびZMQのダウンロードでエラーが生じている。メッセージを確認すると、MbedTLS.x86_64-w64-mingw32.tar.gzおよびZMQ.x86_64-w64-mingw32.tar.gzをダウンロードできず、それぞれをビルドする箇所でエラーが発生しているようであった。
 この2つについて調べた結果、Build error on Windows 7 #133で同様のissueが挙げられており、Windows Management Framework 3をインストールしていないことが原因だと記載されていた。具体的には、Windows Management Framework 3のインストールで得られるWindows PowerShellと、Microsoft .Net Framework 4.5以上が必要であるとのこと。
 私はMicrosoft .Net Framework 4.5はインストール済みであったため、最新版のWindows Management Framework 4のインストールを行った。ダウンロードボタンをクリック後、Windows6.1-KB2819745-x64-MultiPkg.msu(64bit版)(32bit版の場合はWindows6.1-KB2819745-x86.msu)を選択してダウンロードおよびインストールを行った。
 インストール完了後に再起動すると、アクセサリの中にWindows PowerShellがインストールされていた。この状態で、JuliaPkgDirの中身をいったん削除し、Pkg.init()およびPkg.add("IJulia")を再度実行したところ、エラーを生じることなくインストールが完了した。

Juliaの動作確認

 Juliaが使用できるか確認するために、以下のコマンドを実行する。


ENV["PYTHON"]="AnacondaDir\\python.exe"
Pkg.add("PyPlot")

これにより、JuliaからAnaconda3のpython.exeを呼び出せるようになった。また、環境変数で設定したJuliaPkgDirにPyPlot等のパッケージがインストールされ、PyPlotでグラフをプロットできるようになった。なお、pythonのパスを指定する際は、バックスラッシュは二重にすること
 グラフのプロットができるか、以下のコマンドで確認する。


using PyPlot
plot(rand(10), rand(10))

プロットが別ウィンドウで表示された。

Jupyter notebookからJuliaを使用する

Juliaから以下を実行する。


using IJulia
notebook()

するとJupyterが起動し、ウェブブラウザが呼びだされてJupyterのホーム画面が出てくる。あとは、Julia v0.6.2のカーネルを選択して、notebookを作成すればよい。
 なお、私は通常Jupyterを起動する際、スタートメニューのAnaconda3内に登録されているショートカットから行っているのだが、ショートカットから起動したJupyterでは、Juliaカーネルを選択して数秒後にnotebookが落ちてしまう。ターミナルには、ZMQ.jlおよびIJuliaのプリコンパイルに失敗した旨が表示されていた。今のところ原因は不明。

【追記】Julia 1.0.0でJupyterを起動するときのメモ

 Juliaの最新版1.0.0をインストールし、REPLからJupyter notebookを立ち上げたところ、カーネルが死んでしまう状態となった。これについて、Doesn't work on windows + Julia 0.7 #693を参考に以下を試したところ、Jupyter notebookでJulia 1.0.0が使用可能になった。


pkg> free IJulia
pkg> up

【追記2】Windows10+Julia 1.0.0でJupyterを起動するときのメモ

 Windows10では、公式のJulia 1.0.0ダウンロードページにも記述してあるように、上記で述べたような最新版Windows Management Frameworkのインストールや、TLS "Easy Fix" updateが必要ない。しかしながら、add IJuliaでパッケージを追加したのち、build IJuliaでパッケージのビルドを試みたところ、以下のようにエラーが生じた。


(v1.0) pkg> add IJulia
  Updating registry at `C:\Users\username\.julia\registries\General`
  Updating git-repo `https://github.com/JuliaRegistries/General.git`
 Resolving package versions...



(v1.0) pkg> free IJulia



(v1.0) pkg> up



(v1.0) pkg> build IJulia
  Building Conda ──→ `C:\Users\username\.julia\packages\Conda\hsaaN\deps\build.log`
  Building ZMQ ────→ `C:\Users\username\.julia\packages\ZMQ\ABGOx\deps\build.log`
  Building MbedTLS  `C:\Users\username\.julia\packages\MbedTLS\mkHpa\deps\build.log`
  Building IJulia ─→ `C:\Users\username\.julia\packages\IJulia\4VL8h\deps\build.log`
 Error: Error building `IJulia`:
 Traceback (most recent call last):
   File "C:\Users\username\Anaconda3\Scripts\jupyter-kernelspec-script.py", line 6, in <module>
     from jupyter_client.kernelspecapp import KernelSpecApp



 ImportError: DLL load failed: 指定されたモジュールが見つかりません。
 Traceback (most recent call last):
   File "C:\Users\username\Anaconda3\Scripts\jupyter-kernelspec-script.py", line 6, in <module>
     from jupyter_client.kernelspecapp import KernelSpecApp



 ImportError: DLL load failed: 指定されたモジュールが見つかりません。
 [ Info: Found Jupyter version 4.4.0: C:\Users\username\Anaconda3\Scripts\jupyter.exe
 [ Info: Installing Julia kernelspec julia-1.0
 ERROR: LoadError: failed process: Process(`'C:\Users\username\Anaconda3\Scripts\jupyter-kernelspec.exe' install --replace --user 'C:\Users\TENTOU~1\AppData\Local\Temp\julia-1.0'`, ProcessExited(1)) [1]
 Stacktrace:
  [1] error(::String, ::Base.Process, ::String, ::Int64, ::String) at .\error.jl:42
  [2] pipeline_error at .\process.jl:705 [inlined]
  [3] #run#504(::Bool, ::Function, ::Cmd) at .\process.jl:663
  [4] run at .\process.jl:661 [inlined]
  [5] #installkernel#4(::String, ::Function, ::String) at C:\Users\username\.julia\packages\IJulia\4VL8h\deps\kspec.jl:78
  [6] installkernel(::String) at C:\Users\username\.julia\packages\IJulia\4VL8h\deps\kspec.jl:36
  [7] top-level scope at logging.jl:310
  [8] top-level scope at logging.jl:309
  [9] top-level scope at C:\Users\username\.julia\packages\IJulia\4VL8h\deps\build.jl:38
  [10] include at .\boot.jl:317 [inlined]
  [11] include_relative(::Module, ::String) at .\loading.jl:1041
  [12] include(::Module, ::String) at .\sysimg.jl:29
  [13] include(::String) at .\client.jl:388
  [14] top-level scope at none:0
 in expression starting at C:\Users\username\.julia\packages\IJulia\4VL8h\deps\build.jl:9
 @ Pkg.Operations C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.0\Pkg\src\Operations.jl:1069

そこで、Problem installing IJulia on Windows 10 #674を参考にして、以下のようにコマンドを入力したところ、IJuliaをビルドできた。なお、念のため、Juliaを管理者権限で起動し、さらにファイアウォールは無効にした。

julia> using Conda
julia> Conda.add("jupyter")
julia> Conda.update()
julia> ENV["JUPYTER"]="C:\\path\\to\\Anaconda3\\share\\jupyter"
pkg> build IJulia

以下、コマンド実行の記録である。


julia> using Conda
julia> Conda.add("jupyter")
[ Info: Downloading miniconda installer ...
[ Info: Installing miniconda ...
[ Info: Running `conda config --add channels defaults --force` in root environment
Warning: 'defaults' already in 'channels' list, moving to the top
[ Info: Running `conda update -y conda` in root environment
Solving environment: done



julia> Conda.update()
[ Info: Running `conda update -y --all conda` in root environment
Solving environment: done



julia> ENV["JUPYTER"]="C:\\Users\\username\\Anaconda3\\share\\jupyter"
"C:\\Users\\username\\Anaconda3\\share\\jupyter"

(v1.0) pkg> add IJulia Resolving package versions...
  Updating `C:\Users\username\.julia\environments\v1.0\Project.toml`
 [no changes]
  Updating `C:\Users\username\.julia\environments\v1.0\Manifest.toml`
 [no changes]

(v1.0) pkg> build IJulia
  Building Conda ──→ `C:\Users\username\.julia\packages\Conda\hsaaN\deps\build.log`
  Building ZMQ ────→ `C:\Users\username\.julia\packages\ZMQ\ABGOx\deps\build.log`
  Building MbedTLS  `C:\Users\username\.julia\packages\MbedTLS\mkHpa\deps\build.log`
  Building IJulia ─→ `C:\Users\username\.julia\packages\IJulia\nBp96\deps\build.log`

参考

6
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
13