본문 바로가기

취미코딩/python

아나콘다(Anaconda)를 VS Code에서 쓰기

머신러닝, 딥러닝 등의 개념을 배우고 싶어서 입문 책을 샀다. 입문 책은 구글의 colab을 이용하도록 안내해서 별도의 환경 세팅을 설명하진 않는다.

그런데 하다보면 코랩이 약간 느리고(아예 자동 완성이 뜨질 않으면 모르겠는데 느리게 뜨는 현상 등), 로컬에서 실행하는 게 조금이라도 실행 속도가 빨라서 아나콘다를 설치했다.

PyCharm에서 해보는 것도 좋을 것 같은데, 설치할 아나콘다는 유료 버전을 쓰도록 권장한다. 결제할 마음은 없으니 커뮤니티 에디션 대신 익숙한 VS Code로 진행했다.

아나콘다 공홈에서 설치 파일을 받아 실행한다. choco로 설치도 가능하지만, 공홈 안내는 설치파일만 적혀 있으니 추천하지 않는다.

아나콘다는 거대한 프로젝트이지만 설치 후 추가로 건드릴 필요는 없다. Anaconda Prompt가 설치되는데, 사실 명령 프롬프트에 아나코다 환경 변수를 추가한 것이다.

%windir%\System32\cmd.exe "/K" C:\Users\<사용자>\anaconda3\Scripts\activate.bat C:\Users\<사용자>\anaconda3

를 ConEmu 등에 추가해서 쓰면 동일하다. 아나콘다 경로는 본인이 직접 확인하자. 쓸일은 거의 없다.

일단 아나콘다 가상환경을 추가하자. Anaconda Prompt를 실행시키면 기본 환경인 base가 뜬다.

conda create -n <가상환경이름> python anaconda
conda activate <가상환경이름>

python=3.5처럼 파이썬 버전을 지정하는 것도 좋다. 나중에 추가 패키지를 설치할 때 버전 때문에 막힐 때도 있다. 하지만 가상환경은 얼마든지 다시 생성할 수 있으니 크게 신경쓰지 말자.

프로젝트 폴더를 만들고, vs code에서 열고 워크스페이로 저장하다. 환경변수에 anaconda prompt를 터미널로 등록하려면

"terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe",
"terminal.integrated.shellArgs.windows":["/K", "C:\\Users\\<사용자이름>\\anaconda3\\Scripts\\activate.bat C:\\Users\\<사용자이름>\\anaconda3\\envs\\<가상환경이름>"

을 추가하면 된다. 보면 알겠지만 아나콘다를 설치한 폴더가 다르다면 바꿔주자.

터미널을 띄워도 사용할 일은 패키지 추가 말고는 없다.

인터프리터도 가상환경에 있는 파이썬으로 지정해주면 끝난다. Conda 환경설정은 하지 말자.

아나콘다를 설치했으니 사실 입문 단계에서 코드를 따라할 때 새롭게 추가할 패키지는 거의 없다.

주피터 노트북을 VS Code 내에서 쓸 텐데, 여기서는 코드를 실행할 때 CPU 코어를 기본값인 1 이외의 값으로 지정하면 에러가 난다. n_jobs=-1과 같은 파라미터를 넣으면,

TerminatedWorkerError: A worker process managed by the executor was unexpectedly terminated. This could be caused by a segmentation fault while calling the function or by an excessive memory usage causing the Operating System to kill the worker.

이런 에러 메시지가 뜬다. 대충 OS가 메모리를 많이 쓰는 걸 차단했다는 얘긴데, 구글링을 해봐도 딱히 해결책은 못 찾았다.

그래서 다른 해결책을 찾았다. 파이썬 인터랙티브 셸에서는 정상 실행이 된다. 그러니 .ipynb 파일을 만들어서 주피터 노트북을 실행하지 말고, .py 파일을 만들어서 # %%로 셀을 만들어서 실행하면 인터랙티브 셸에서 동일 실행이 된다. 이 편이 훨씬 낫고, 머신머닝을 공부하기 전에 파이썬을 인터랙티브 셸에서 자주 썼다면 훨씬 편하다.

사족. 아나콘다는 kite라는 걸 함께 설치하는데 vs code를 실행하면 kite 확장이 자동으로 적용되서 자동 완성 등에 괜찮은 기능을 제공한다. 3개월 동안 유료 프로그램을 제공하고, 그 뒤에 결제할 의향이 없다면 커뮤니티 버전을 제공한다고 한다.