파이썬(Python) virtualenv와 conda 중 무엇을 사용해야 할까

Posted In: 미분류

파이썬으로 개발 시 프로젝트마다 서로다른 패키지 버전을 사용하는 경우에는 파이썬 가상환경을 통해 버전 충돌 문제를 해결할 수 있다. 파이썬 가상환경에 대한 설명은 다른 곳에도 많으니 난 내가 고민했던 부분만 요약적으로 남기려고 한다.

내가 사용하던 개발 환경

우선 나는 virtualenv를 통해 아무런 문제 없이 파이썬 개발을 하고 있었으며, 프로젝트가 새로 추가될 때마다 virtualenv를 새로 만들어서 개발을 하곤 했다. 로컬에서 개발하는 프로젝트는 로컬에 가상환경을 만들고, 서버에서 개발하는 것이 유리한 프로젝트는 Pycharm을 이용하여 remote interpreter 설정을 통해 서버상에 만든 가상환경을 선택하여 사용해왔다.

패키지가 점유하는 용량에 대한 문제인식

문제는 프로젝트가 수십개에 달하니 가상환경의 용량도 만만치가 않았다. 특히나 용량이 큰 머신러닝 관련 패키지(예: TensorFlow, PyTorch 등)는 매 프로젝트마다 사용함에도 각각 설치하니 나중에는 1개의 가상환경의 용량만 수 기가에 달하는 경우도 생겼다.

conda가 좋다고 하는 여러 사람들의 의견을 많이 들어왔으나, 사실 굳이 사용함에 불편함이 없었던지라 conda로 넘어갈 생각은 하지 않았지만, 갑자기 궁금해진 것은 conda 는 패키지 관리를 통합적으로 해준다던데 그렇다면 과연 각 환경마다 용량은 어떻게 점유하는 것일까 궁금해졌다. 패키지를 통합관리한다면 동일버전의 패키지는 1개만 설치하고, 각 가상환경에서는 그것을 링크에서 쓰지 않을까 생각이 들었던 것. 그렇다면 용량 측면에서 이득이 있으니 반드시 쓰는 것이 좋지 않을까.

miniconda 설치 및 용량 확인

내가 필요한 패키지만 그때그때 설치하고 싶어 설치는 miniconda로 시작했다. 설치를 하고나서 동일 프로젝트에 대해 virtualenv와 conda 환경을 만들어 requirements를 모두 설치한 후, 가상환경의 디렉토리 용량을 살펴보았다. 그러나 예상과 다르게 conda 역시 site-package 폴더 밑에 패키지를 그대로 설치하고 있었다. 심지어 최신 버전의 패키지 등은 PyPI에는 있었지만 conda에는 없는 경우가 많아 설치가 불편한 점들이 있었다.

결론

분명 conda는 가상환경과 패키지 관리를 잘 할 수 있도록 하는 좋은 도구일 것이다. 그러나 내가 궁금한 부분인 매 가상환경마다 패키지가 점유하는 용량에 대해서만 단편적으로 살펴봤다. 용량 측면에서는 conda가 만드는 가상환경이 추가적인 패키지들을 더 설치하여 더 많은 용량을 차지하고 있었기에 큰 이점은 없었다. 혹시라도 conda를 써야하는 이유를 내가 발견하지 못했다면 댓글로 추천을 해 주셨으면 한다.