jupyterlab & kite

5 minute read

Jupyterlab 실행시 권한 에러 PermissionError:[Errno 13] 해결하는방법, jupyterlab theme 변경,conda 관련 이것저것, kite 소개 및 jupyterlab에서 사용법 등등.

Jupyterlab

최근에 많이 사용하게 됐는데 nbdev등 편리하고 좋은 라이브러리가 많다. 콘솔로 보니까 워낙 직관적이라 ipython부터 썼는데 요즘은 환경을 vscode보다 jupyter로 더 많이 사용중.

Permission Error

커맨드에서 환경 활성화시키고 주피터 실행시킬때, 한번은 /home에서 실행 -> home/user/.gvfs Permission denied 발생. home/user/anoter/folder로 이동후 실행시 jupyterlab-kite 에러없고 로드됨. 그러나 둘 다 공통적인 에러가있다.

PermissionError: [Errno 13] Permission denied: '/home/user/.jupyter/lab/workspaces/default-37a8.jupyterlab-workspace'

해결법

사용중인 머신은 ubuntu 18.04lts에 jupyterlab은 3.0.10버전을 사용중이다. 저 경로가 다른 사람도 있던데 해결방법은 비슷할 것 같다. 특히 jupyterlab과 jupyter notebook의 경우.

$ sudo chown -R user:user ~/.jupyter/lab

참고

콜론 앞부분의 유저는 나의 유저명이고 뒷부분은 나의 그룹명인데 그룹이 없으면 생략하고(지우고) 실행하면 된다. $ printenv명령은 환경변수를 출력해준다. 유저그룹을 명령줄에 띄워주는 명령은 $ groups, $groups user, $id user. 참고로 chown은 linux-like command고 change owner라는 뜻의 약자이다. 해당 명령줄의 -R 옵션은 recursive이다. 해당 폴더 내의 폴더 및 파일에 (재귀적으로)일괄 적용한다는 의미이다.

jupyterlab 테마 변경

jupyterlab 콘솔에서 코드 작성할때 드래그 가독성이 떨어져서 커스텀 테마를 찾아보았다. 그전까지는 기본 내장 다크 테마 사용중이었다. 어디서 테마를 로드하기 위해서는 node.js가 필요하다 하여 설치하느라 시간을 허비했는데, 결과적으로 이방법으론 테마 변경이 안됐다. 그래도 다음을 위해 글로 남겨둔다.

node.js 12.x<= 설치

우선 node.js 홈페이지나 구글링해서 나오는 방법으로 했을때 자꾸만 node.js 8.x 버전이 설치되었다. 그러나 8.x 버전은 호환이 되지않아 최신버전(14.x or 15.x)이나 적어도 12.x가 필요했다.

$ sudo snap install node-classic -channel [version]/stable

[version]부분에 설치하고자 하는 버전을 적어준다(12, 14 등). 설치가 완료되면 $node --version으로 제대로 설치되었는지 확인해본다.

그런데 내가 설치하려 했던 Material Darker theme가 지원하는 jupyterlab버전이 3.x 이하라서 결국 node설치는 의미없었다. 물론 처음부터 jupyter2.x로 사용중이면 위의 방법으로 테마 변경 가능하다.

테마 진짜로 변경

jupyterlab-themes 여기서 보고 그대로 따라하면 된다.

Python

용어와 명칭이 헷갈리는 것을 생길때마다 기록하려고 한다. 자료구조 특히 딕셔너리와 그 비슷한 것들 많이 쓰여 정리한다.

용어, 명칭

  • Collections: module
  • defaultdict(): class
  • dict(): constructor

defaultdict()

  • defaultdict(int), defaultdict(lambda: 0) 이것은 둘다 0을 리턴하게 만든다.
  • defaultdict(lambda: defaultdict(int))d['food']['fruit']='27'와 같은 표현이다. 머신러닝같은 다소 복잡한 자료구조가 필요할때 자주 쓰이는것 같다. 인덱스와 값들을 표현할때.

python 기타

  • 예를들면, model.fit(x, y, epochs=100, verbose=0)처럼, 훈련할때 자주 보이는 인수 verbose, verbose=0는 학습의 진행 상황을 보여줄 것인지 지정을 하는것이다. verbose를 1로 세팅하면 상황을 볼 수 있다. 커맨드나 콘솔 창에서.

  • sorted(list), list.sort() 두개는 기능적으로 동일하나, 전자는 list를 후자는 NoneType을 리턴한다는 차이가 있다.

Kite

얼마전에 알게된 툴킷인데 파이썬에서 작동하는 머신러닝 기반 키워드, 함수등 코드 입력을 예측해주는 플러그인이다. 거의 모든 ide나 에디터에서 돌아가는것같고, 플러그인 형태로 동작한다. vscode에서 사용하는 방법은 kite 홈페이지에 자세히 나와있다.

jupyterlab에서 kite사용

또 jupyterlab에서 생긴 문제와 해결방법이다. rdkit 모듈사용할때 docs등을 빠르게 보고싶어서 jupyter에도 kite를 설치하려 했으나 실패했고, 첫번째 문제는 conda로 만든 가상환경이 현재 2개 이상 활성화 되있었다는 것이다. 반드시 확인하자. 사실 이것보다 큰 문제는 사용중인 pypi의 국내 미러서버 카카오에 kite 패키지가 없다는 것이다. 그래서 pip든 conda로든 install 시도하면 실패한것이다. 이럴때만 pip에서 -i 옵션을 달아주고 설치하면 된다.

$ pip install [package-name] -i https://pypi.python.org/simple

근데 정작 rdkit은 잘 안쓰이는 컬렉션이라 그런지 kite에서 분석을 안해준다.

etc.

ubuntu 버전마다 bionic beaver같은 이름이 있는데 이게 알고보니 동물 이름이다. bionic은 18.04버전 설치시 처음 설정된 배경화면에 있는 그 동물이다. 안드로이드처럼 매 프로젝트를 특정한 시리즈로 이름을 붙인다.

현재 conda로 사용중인 환경은 python3.6, jupyterlab3, pytorch1.7.1, rdkit, jupyter-kite등.

If you use conda, please share your environment

python method description 작성은 kite로 여러가지 메서드 방식들 참고.