본문 바로가기
데이터과학 기초/Python배우기

conda로 손쉽게 파이썬 환경 관리하자 (Intel부터 M1까지) - 기초

by eigenvector 2022. 7. 31.
반응형

Conda?

 

파이썬에 관심 있는 유저라면 패키지 설치 과정에서 conda라는 명령어를 들어봤을 것입니다.

 

대부분의 패키지가 설치 과정에서 "conda install ~~~~"나 "pip install ~~~"를 쓰기 때문입니다.

 

그렇다면 conda는 무엇인가? 라고 물어본다면.

 

다양한 프로그램 언어(보통 Python)와 연결되는 “환경/패키지” 관리 시스템

 

이라고 말할 수 있습니다.

 


왜 쓰는가?

 

제대로 설치하면 문제가 해결되는 R, SPSS, STATA, Excel과 달리 Python에서 확장 기능은 복잡하게 얽혀있습니다.

 

패키지 간의 의존성이 크기 때문에 A는 B를 쓰고, B는 C를 쓰고 C는 B를 쓰는데, D는 A가 있으면 안 되고… 하는 일이 많이 발생합니다.

 

(예를 들어 Numpy와 Pandas가 버전이 맞지 않거나, 파이썬 3.7에서는 되는데 3.8에서는 안되는 경우가 있습니다)

 

특히, 개인이 쓰는 레벨에서는 어느 정도 통제가 되지만, 협업하거나 새로운 패키지를 배포하는 경우 설정이 더욱 꼬이게 됩니다.

 

그래서 "오류가 안나도록 같은 환경/세팅"으로 파이썬을 쓰게 하자!

(A환경에 속한 패키지끼리, B환경에 속한 패키지끼리 따로 분리해서 사용)

 

는 시도가 이뤄졌고, 그 중 대표적으로 anaconda를 사용하게 된 것입니다.

 


간략화시킨 원리 설명

거창하게 말했지만, 원리는 간단합니다.

 

[명령 -> 단일환경 -> 결과] 일 때, 여러 패키지를 깔수록 경로/설정이 충돌하므로

 

패키지에 맞춰 여러 폴더로 환경을 나눠서 관리하다가 필요할 때 바꿔쓰자 (다중 환경)

 

라는 아이디어를 생각했고

 

명령 -> [ 아나콘다 -> 내가 지정한 폴더] -> 결과

 

로 구조가 바뀐 것입니다.

 

이 경우

 

1) 내가 지정한 폴더를 지우거나 / 복제 / 롤백할 수 있음 + 환경을 그대로 배포 가능


2) 충돌하는 패키지가 있으면 환경을 두 개 만들고 번갈아서 씀 (e.g. NLP용, 딥러닝용, python3.7, 3.8 같이 사용)

 

과 같은 장점이 생기게 됩니다.

 


Anaconda vs Miniconda vs Miniforge

그렇다면 conda를 쓰려면 Anaconda를 설치하면 될까요? 꼭 그렇지는 않습니다.

 

Python이 인기를 끌면서 패키지가 늘어남에 따라, Anaconda도 성장(?)했습니다.

 

용량이 증가하고 무거운 프로그램이 되면서 유저들의 부담이 커지게 됐습니다.

 

Anaconda 하나만 설치하면 환경 설정이 끝이지만, 설치 과정 자체의 부담이 커진 것입니다.

 

이에 따라 고급 유저가 쓰기 편하게 만든 미니 버전인 miniconda가 만들어졌습니다.

 

또한, 다수 환경이 아닌 다양한 환경(M1, M2, 애플 실리콘 포함)을 지원하는 miniforge도 등장하게 됩니다.

 

(그래서 miniforge의 github을 들어가면 다양한 환경에 맞춰 여러 버전의 miniforge를 제공하고 있습니다)

 

특히, M1노트북의 엄청난 인기로 연구자들 사이에 miniforge의 인지도가 크게 증가하게 됐죠.

 


터미널? CLI?

일반적으로 사용되는 아이콘~클릭 식의 GUI(그래픽 유저 인터페이스)와 달리, conda는 주로 CLI(커맨드 라인 인터페이스)로 움직입니다.

 

CLI는 간단히 말해 "내가 명령어를 타이핑해서 작동"하는 방식입니다.

(간단히 비교해서 GUI가 "크롬"을 실행하기 위해서 아이콘을 클릭한다면, CLI는 컴퓨터 타이핑으로 "open chrome"과 같이 입력하는 방식입니다)

 

고대(?)부터 내려온 낭만 있는 방식이라고 볼 수 있는 CLI는 conda를 작동시키는 핵심이라고 볼 수 있습니다.

(영화에서 보이는 뭔가 있어 보이는 검은색 화면에 타이핑하는 이미지는 CLI와 매우 관련이 깊습니다)

 

그렇다면 어디에 타이핑을 해야 컴퓨터가 동작할까요?

 

타이핑 작업을 하다 갑자기 컴퓨터가 오작동하는 경우를 막기 위해 맥이나 윈도우는 명령을 받는 프로그램을 따로 만들어 놨습니다.

 

맥 OS의 경우 "터미널"

 

윈도우의 경우 "윈도우 터미널" (기본값은 "명령 프롬프트"라는 프로그램이지만 윈도우 터미널을 추천합니다)

 

이라고 합니다. 탐색기나 스팟라이트 기능으로 찾아볼까요?

 

아마 실행해도 검은/흰색 창만 뜨고 아무 일도 없을 겁니다(당연합니다. 입력을 안 했으니까요)

 

이제부터 제가 언급하는 "명령어"들은 모두 "터미널"을 실행시킨 상태에서 입력되는 값으로 생각하시면 됩니다.

 


설치/활성화

이제 설치/활성화 과정을 수행해 봅시다.

 

Miniconda혹은 Miniforge중 하나를 선택(일반적으로는 Miniconda를 추천)하여 아래와 같이 설치를 진행하면 됩니다.

(로제타2 사용 등의 목적이 있다면 두 개를 모두 설치하여 사용할 수 있지만, 설정이 복잡하기 때문에 초보에게는 추천하지 않습니다)

 

더블클릭 간편 설치 (추천!)

 

miniconda 공식 페이지에서 환경에 맞춰 실행 파일을 다운로드하여 클릭합니다(맥의 경우 pkg 파일을 받아주시면 됩니다)

 

파이썬 버전은 되도록 최신으로 받아주세요.

 

https://docs.conda.io/en/latest/miniconda.html

 

Miniconda — Conda documentation

Miniconda is a free minimal installer for conda. It is a small, bootstrap version of Anaconda that includes only conda, Python, the packages they depend on, and a small number of other useful packages, including pip, zlib and a few others. Use the conda in

docs.conda.io

 


M1, M2 (애플 실리콘) 호환 Miniconda/Miniforge 심화 설치 (잘 모르시겠다면 넘어가셔도 됩니다)

 

애플 실리콘을 지원하는 miniconda/miniforge 깃헙에서 sh 설치 파일을 다운로드 합니다

(miniconda는 위 주소, miniforge는 https://github.com/conda-forge/miniforge 입니다)

 

위에서 말한 "터미널"을 실행시킨 후 타이핑이 되는지 확인합니다.

 

타이핑이 된다면 "bash" 혹은 "sh" 를 입력 후 스페이스로 한 칸 공백을 입력, 다운받은 파일을 드래그 해서 커서 위치에 놓습니다.

 

이렇게 하면 터미널 창 아래 [bash 파일이름.sh] 과 같은 명령어가 생성됩니다.

 

간단히 말해, bash(sh)라는 명령으로 오른쪽에 있는 파일을 작동시키겠다는 의미입니다(공백으로 구분).

이 상태에서 엔터키를 누르면 설치가 진행됩니다.

 

이후, 설치 안내를 엔터 키를 누르며 진행하면 세 가지 질문지가 나오는데

 

읽어보시고 설치에 동의하신다면 다음과 같이 허가 후 진행하시면 됩니다 

 

첫 번째 - 설치 사항 안내에 동의하는지? yes (타이핑)

두 번째 - 제시된 설치 폴더에 동의하는지? ENTER키 입력

(잠시 설치 진행 후)

세 번째 - 설치 후 활성화에 동의하는지? yes(타이핑) / 잘 모르시거나 처음 설치하신다면 yes를 추천드립니다

 

잠시 설치 과정을 보다가, 설치가 완료된 것 같으면 터미널을 종료하시면 됩니다.


Conda 설치 확인

Conda 설치 확인은 간단합니다.

 

터미널을 다시 실행한 이후(만약 설치하고 나서 켜놓은 상태라면 일단 한번 종료해 주세요)

 

(base)라는 표시가 화면에 떠 있으면 설치가 완료된 것입니다.

 

"conda환경 중 아무것도 활성화하지 않았기 때문에 기본환경(base)이 설정됐다"

 

는 뜻입니다.

 


Conda 환경 사용하기

그렇다면 conda를 어떻게 사용할까요?

 

크게 세 단계를 거칩니다.

 

1. 앞으로 내가 쓸 환경을 설계한다 (집을 짓고)

2. 내가 쓸 환경이 완성되면 -> 환경을 활성화 시킨다 (들어가서)

3. 패키지를 인스톨하고 사용한다 (작업을 한다)

 

왜 "활성화" 라는 작업을 할까요?

 

하나 이상의 다중환경을 사용하기 때문입니다.

 

터미널에서 다음과 같이 입력하면 현재 사용 가능한 환경(집 목록)이 뜹니다.

 

conda env list

현재는 (base) 빼고는 아무것도 안 나올 것입니다.

 

이제 하나씩 만들어 보도록 하겠습니다.


새로운 환경 설치하기

새로운 환경 설치는 간단합니다. 다음과 같이 입력해 주세요.

 

conda create -n new python=3.8

 

해석하자면

 

conda (아나콘다 명령을 수행한다) create(환경을 생성) -n(이름은) new(new가 이름이다) python=3.8 (파이썬 버전은 3.8이다)

 

이란 뜻입니다.

 

잠시 후 기다리면, 환경 세팅 목록을 소개하는데 이미 최적화 되어 있기 때문에 y를 눌러서 진행하시면 됩니다.

 

이제 conda env list를 다시 확인하면 new 라는 환경이 새로 생성된 것을 확인할 수 있습니다.

 


환경 활성화 하기

설치만 했다고 환경을 쓸 수 있는 것은 아닙니다.

 

환경을 활성화 해 줘야 하는데요

 

conda에서는 activate와 deactivate로 설정/해제를 처리합니다.

 

성공적으로 활성화 됐는지 확인하려면 왼쪽의 기본환경이 (new)로 변경됐는지 확인하면 됩니다.

 

# new라는 환경 활성화, 작동할 경우 (base)에서 (new)로 환경 바뀜
conda activate new

# new라는 환경에서 기본(base) 환경으로 복귀
# new 환경 상태에서
conda deactivate

패키지 인스톨하기

이제 마지막으로 conda의 핵심인 패키지 설치를 알아보겠습니다.

 

패키지 설치는 conda install로 수행하는데요.

 

패키지 설치에 따른 충돌을 막기 위해 설치 채널을 지정할 수 있습니다.

(이 기능이 conda install의 핵심입니다)

 

여기서는 유명한 설치 채널이며, 개인적으로도 추천하는 conda-forge 채널을 통해 인스톨을 진행해 보도록 하겠습니다.

 

예를 들어 pandas를 설치한다면, 채널 옵션(-c conda-forge)을 넣고 다음과 같이 입력하면 됩니다.

 

conda install -c conda-forge pandas

 

물론, conda-forge에서 지원하지 않는 패키지는 pip나 conda로 그냥 인스톨 해도 됩니다.

 

문제가 생기면 환경을 삭제하고 새 환경을 만들거나 롤백하면 되니까요.

 


환경 삭제하기

만약, 새로운 환경에서 이것 저것 설치한 것이 많아 오류가 발생한다면 어떻게 할까요?

 

conda의 장점인 "삭제 후 재설치"를 하면 됩니다.

(설치 롤백도 있지만, 문제 원인을 모를 경우 한번에 삭제하는 편이 더 좋을 수 있습니다)

 

환경 삭제는 conda env를 활용합니다.

 

# 우선, 기본 환경으로 돌아간 상태에서
conda deactivate

# 환경 삭제 명령을 수행합니다
conda env remove -n new

# 제대로 삭제됐는지 확인해 볼까요?
conda env list

 


마무리

간단히 conda의 설명과 설치, 사용법을 알아봤습니다.

 

사실, conda는 환경 설정을 포함하여 더 많은 기능을 지원하는데요.

 

이것은 다음 conda 포스팅에서 구체적으로 다뤄보도록 하겠습니다.

반응형