IJulia는 Jupyter용 Julia 커널로 Jupyter 노트북에서 julia를 사용할 수 있게 해준다. Julia 패키지를 설치하고 빌드하면 현재 버전의 Julia 커널이 자동으로 설치된다. 이 글은 Julia를 제거한 후에 새 버전으로 재설치하면서 IJulia를 새로 설치하는 과정을 정리한 것이다.
가장 먼저 할 일은 기존에 설치돼 있던 커널을 제거하는 것이다. jupyter kernelspec
명령을 사용하면 현재 설치된 커널의 목록을 확인하고, 커널을 제거할 수 있다. jupyter kernelspec list
를 실행하면 설치된 커널이 아래와 같은 식으로 표시된다. 앞 부분이 커널의 이름, 뒷부분이 커널의 설정이 저장된 경로이다. “julia-1.1” 이 설치된 것을 확인할 수 있다.
$> jupyter kernelspec list
Available kernels:
javascript C:\Users\$%!#$@#$@$%$\AppData\Roaming\jupyter\kernels\javascript
julia-1.1 C:\Users\$%!#$@#$@$%$\AppData\Roaming\jupyter\kernels\julia-1.1
python2 C:\Users\$%!#$@#$@$%$\AppData\Roaming\jupyter\kernels\python2
python3 G:\anaconda3\share\jupyter\kernels\python3
기존 커널을 삭제한다. jupyter kernelspec remove julia-1.1
을 실행하여 제거한다. 제거 시에 권한이 어쩌구 하면서 오류가 나는 경우가 있는데, 다시 커널 목록을 확인해보면 해당 커널이 제거된 것을 알 수 있다.
$> jupyter kernelspec remove julia-1.1
Kernel specs to remove:
julia-1.1 C:\Users\soooprmx\AppData\Roaming\jupyter\kernels\julia-1.1
Remove 1 kernel specs [y/N]: y
IJulia 설치
IJulia 홈페이지에서 소개하는 것처럼, 설치는 엄청 간단하다. 그런데, 주의할 것이 “IJulia”는 단순히 Jupyter 용 커널로만 사용하기 위한 목적이 아니라, Julia만 사용하는 사람도 Jupyter notebook을 사용해서 Julia를 실행할 수 있게 하는 용도로 만들어졌다는 것이다. 그래서 IJulia는 conda (Miniconda)를 임의로 설치해서 이를 통해 파이썬과 Jupyter 패키지를 설치해버린다. 만약, 기존에 Jupyter를 사용하고 있던 사람이라면 당혹스러울 수 밖에 없다.
그래서 기존에 사용하던 jupyter 의 실행 파일의 경로를 파악해서, 미리 Julia 환경을 설정한 후에 설치해야 한다. ENV
는 줄리아에서 환경 변수를 모은 테이블인데, 여기에 "JUPYTER"
키의 값을 jupyter.exe의 전체 경로를 지정한다. 참고로 윈도 환경에서, 줄리아는 경로 구분자를 여전히 역슬래쉬를 쓰기 때문에 아래와 같이 이스케이프 해주어야 한다.
julia> ENV["JUPYTER"] = "G:\\Anaconda3\\Scripts\\jupyter.exe"
julia> using Pkg
julia> Pkg.update()
Updating registry at `C:\Users\$%!#$@#$@$%$\.julia\registries\General`
Updating git-repo `https://github.com/JuliaRegistries/General.git`
Resolving package versions...
설치가 끝나면 Julia용 커널이 등록된다. julia 에서 노트북을 실행해보자. (꼭 실행해봐야 한다.)
juila> using IJulia
julia> notebook()
만약 notebook()
을 실행했는데, “conda를 사용하여 시작하겠느냐”고 묻는다면, 시스템의 기존 jupyter를 사용하도록 설치가 안된 것이다. 그 때에는 IJulia를 삭제하고 처음부터 다시 시도해보도록 하자. 정상적으로 실행이 됐다면 새 노트북을 만들 때, 줄리아 커널을 선택할 수 있을 것이다.