본문 바로가기
Backend MLOps/개인 환경 구축 기록

[ 자취방 워크스테이션 ] # 13 주피터 노트북과 아나콘다 가상 환경 연결

by SteadyForDeep 2021. 3. 6.
반응형

//1

앞서 살펴본 것처럼

주피터를 만들고 코드를 실행하는 것으로

주피터는 끝이 날 것 같지만

한가지 문제점에 봉착하게 되는데

바로 패키지 메니지먼트와의 연동이다.

 

가상환경을 A, B로 나눠서 사용하고 있었는데

내가 A에 빌드업 해둔 패키지들을 사용하고 싶다면

주피터를 어떻게 열어야할까?

 

혹은 A, B를 번갈아가면서 쓰고싶은데

그러면 가상환경 수 만큼의 포트를 포워딩해서

그만큼 주피터를 열고 사용해야하는 것일까?

 

 

 

 

//2 가상환경과 jupyter notebook 연결

거두절미하고 본론부터 말하자면

base에서 하나의 주피터를 열어서

각각의 환경에 연결시켜주는 것이 가장 최선이다.(경험)

주피터 노트북은 ipynb 파일에

굉장히 많은 정보를 담아둘 수 있는데

여기는 어떤 가상환경에 연결된 에디팅 페이지 인지도 포함된다.

그러니까 같은 코드여도

그때그때 다른 가상환경에 연결해서 사용하는 것이 가능하다.

 

우선은 연습용으로 차근차근 설명하기 위해서 A라는 가상환경을 만들어보도록 하자.

 

A라는 가상환경을 만들때 파이썬 3.7 말고는 아무것도 설치하지 않도록 한다.

A를 활성화해준다.

주피터가 없기 때문에 당연히 주피터가 안열린다.

설치해보자.

주피터는 pip로 설치가 가능하다.

물론 conda로도 설치가 가능하다.

여기서 중요한 부분이 바로 이 페키지 설치 툴인데

나는 pip로 설치하는 것을 추천한다.

그러니까 conda를 깔때 딸려와 있는 주피터라면 지우고

pip로 다시 까는 것까지 추천한다는 말이다.

 

왜냐하면 jupyter extension을 깔아서 사용할때

conda에는 없고 pip에는 있는 경우가 종종 있다.

conda의 지원 풀이 좁으므로 반대의 경우는 거의 없다.

그런데 conda를 이용해서 주피터를 깔아둔 상태에서

pip로 익스텐션을 깔게 되면 에러가 발생하는 경우가 종종있다.

(특히 리눅스에서)

아무튼 주피터 관련해서는 한가지 페키지툴로 통일해서 작업하자.

 

그리고

> python -m ipykernel --user --name 가상환경이름 --display-name "표시할_이름"

위의 명령어를 cmd나 terminal에 입력해주면 된다.

가상환경이름은 따옴표가 없고 표시할 이름은 따옴표가 있다.

 

 

 

 

//3

주피터를 열면 다음과 같이 뜨게 된다.

여기서 ipynb 파일을 하나 새로 만들기 위해서 New를 누르면

보통은 Python 3 만 떠 있는 경우를 보게 된다.

내가 찍은 스샷은 보시다시피

이미 다른 환경들과 연결되어있다.

토치와 텐서플로우를 나눠서 쓰는 중이다.

또 방금 추가한 A_env또한 추가되어있다.

 

노트북을 만들어서 접속한 상황이다.

오른쪽 위에 A_env를 볼 수 있는데

이게 우리가 어떤 가상환경과 연결되어 있는지 알려주는 상태창이다.

아까 우리가 만들고 클릭해서 들어온 그 환경이다.

저기에 표시되는 이름이 바로 --display-name "표시할_이름" 에 있는 그 표시할 이름이다.

 

표시할 이름이 왜 환경이름과 다르냐 하면

서버관리자와 클라이언트가 일반적으로는 다른 사람이기 때문에 그렇다.

 

왼쪽 동그라미는 동작중인 프로세서가 있는지 없는지 알려주는 표시이다.

 

그런데 A_env에서는 numpy조차 없는 것을 알 수 있다.

왜냐하면 파이썬 말고는 아무것도 안깔았기 때문.

여기서 위에 보이는 방법으로 커널을 바꿔주면

커널이름이 파이썬으로 바뀌면서 넘파이가 된다.

 

주피터는 서버 하나를 열때마다

하나의 포트를 열어서 포워딩해야 외부에서 사용이 가능하다.

하지만 이 방법을 통해서 여러가지 환경에 커널을 연결시켜두면

서버를 하나만 열어도 여러가지 환경을 사용하는 것이 가능해진다.

 

 

 

반응형

댓글