가상환경을 설치하는 방법은 anaconda, pip 등 여러 가지가 있다. 

오늘은 anaconda와 pip을 둘 다 사용해서 가상환경을 만들어 보자. 

pip는 저번에 구체적으로 다루었으니, 이번에는 conda를 사용해서 가상환경을 만든 뒤 그 안에서 pip를 사용해 볼 것이다. 

 

anaconda와 pip은 모두 파이썬을 사용하는 가상환경을 만들어 준다는 점에서 동일하지만, anaconda에서 사용 가능한 라이브러리와 pip에서 사용 가능한 라이브러리가 다르다. 

(물론 numpy처럼 둘 다에서 사용 가능한 라이브러리도 있다.)

 

anaconda와 pip의 차이

anaconda와 pip이 어떻게 다른지를 알아보기 위해서 각 시스템의 특징을 보자. 

 

pip는 파이썬 환경에서만 사용할 수 있는 패키지가 포함된다.

반면 conda는 파이썬 외의 C, C++, Java 등에서도 사용 가능한 패키지도 포함된다. 

 

또한 pip의 패키지들은 소스 패키지라서 아직 빌드를 하지 않은 상태이다. 즉 빌드를 하다가 예외적인 상황으로 오류가 발생할 가능성이 있다. 

반면 conda의 패키지들은 사용자의 운영체제에 맞춰서 이미 빌드가 된 상태이고, 한 패키지의 버전을 변경하면 그 패키지와 의존관계가 있는 다른 패키지의 버전도 맞춰서 변경해 준다. 

 

conda의 단점을 얘기한 것 같은데, 그렇다기보다는 두 시스템이 다르다고 보면 될 것 같다. 

pip의 장점 중에서는 conda보다 용량이 가벼운 패키지들이 많다는 의견도 있다. 

 

conda의 패키지를 C나 Java에서 사용할 수 있는 이유

이는 파이썬 언어의 특징과 관련이 있다. 

파이썬은 C, C++와 잘 결합되는 언어이다.

일부 파이썬 라이브러리의 경우, C나 C++로 라이브러리를 개발한 뒤, 파이썬 언어를 사용해서도 해당 라이브러리를 다룰 수 있게 만들었다.

그래서 conda의 패키지를 파이썬과 C++ 환경 모두에서 사용할 수 있다. 

 

 

본격 설치하기

 

시작 전에, anaconda 공식 홈페이지에서 anaconda를 다운 받고 환경변수 설정을 마쳐야 한다. 

제대로 잘 되었다면, 윈도우 cmd 기준으로

conda --version

이렇게 입력했을 때 오류 없이 anaconda의 버전이 뜰 것이다. 

 

conda 가상환경 설치하기

지금부터는 cmd에서 conda라는 anaconda 환경변수를 이용해서 작업할 것이다. 

conda create -n {가상환경 이름} 

conda create -n condaenv

 

pip와 마찬가지로 특정 버전의 파이썬을 사용하는 가상환경을 만들고 싶다면 뒤에 python={버전} 을 붙여준다. 

conda create -n {가상환경 이름} python={파이썬 버전}

conda create -n condaenv python=3.6

당연한 말이지만 여기서 명시한 파이썬 버전 파일이 로컬 PC에 있어야 한다. 

 

conda 가상환경 삭제하기

만약 가상환경을 잘못 만들었다면 삭제해야 한다. 

conda remove -n {환경변수 이름} --all

conda remove -n condaenv --all

가상환경의 특정 부분만 삭제하려는 것이 아니라면 명령어 뒤에 반드시 --all 을 붙여주자. 그래야 환경 전체가 잘 삭제된다. 

환경이 완전히 삭제되지 않는 경우, 다음에 같은 이름으로 가상환경을 만든다면 conda 파일이 아닌 해당 이름의 파일이 이미 해당 디렉토리에 존재한다는 식의 에러가 뜬다. 

 

conda 가상환경 실행하기

아무튼 가상환경이 잘 만들어졌다면 이제 가상환경을 실행해야 한다. 

conda activate {가상환경 이름}

conda activate condaenv

 

CommandNotFoundError 오류가 난다면? 

나는 conda를 처음 사용했었는데, 처음에 이 명령어를 입력하니 오류가 났다. 

 

CommandNotFoundError: your shell has not been properly configured to use 'conda deactivate'

 

1) 윈도우

맨 처음 conda 가상환경을 만들었다면, 바로 실행하지 말고 conda init 명령어를 입력한다. 

그러면 conda와 Shell(여기서는 cmd)이 서로 연결되기 위해서 초기화 작업을 실행한다. 

이 작업이 끝나면 초기화 작업이 잘 반영되도록 cmd를 끄고 새 창을 열라는 말이 나온다. 

 

2) 맥, 리눅스

다른 커맨드를 입력해서 문제를 해결할 수 있다. 

source ~/anaconda3/etc/profile.d/conda.sh
conda activate my_env

 

conda 패키지 설치하기

conda install {설치할 패키지 이름}

conda install package-name

 

만약 기본 채널(channel)이 아니라 다른 채널의 패키지를 설치하고 싶다면 -c 옵션을 추가하자. 

conda install -c {채널 이름} {설치할 패키지 이름}

conda install -c conda-forge pythonocc-core occt

 

🗒️채널(Channel)

conda 패키지를 저장하는 저장소. conda에는 여러 개의 원격 저장소(채널)가 존재한다. 

예를 들어 다운받으려는 패키지가 A 채널에 있다면, -c 옵션으로 A 채널에서 패키지를 다운로드한다고 명시해 주어야 한다. 

대표적인 conda 채널에는 conda-forge가 있다. 

 

--append: 채널 추가하기

어떤 채널을 통해서 패키지를 다운 받고 싶다면 우선 그 채널을 채널 목록에 추가한다. 

conda config --append channels {채널 이름}

 

channel_priority: 채널 우선순위 정하기

기본 환경에서 conda는 default 채널을 사용한다. 

만약 본인이 conda-forge 등 거의 한 채널만 이용한다면 매번 -c 옵션으로 채널을 명시하는 것은 번거로울 수 있다. 

그럴 땐 채널 리스트의 여러 채널들 중에서 우선순위를 정하면 된다. 

conda config --set channel_priority strict

 

--show channels: 채널 우선순위 확인하기

현재 채널의 우선순위는 채널 리스트에서 확인할 수 있다. 

conda config --show channels

가장 위에 있는 것이 가장 우선순위가 높은 채널이다. 

 

pip로 패키지 설치하기

pip install -r {파일 이름}

해당 파일에 명시된 이름과 버전 그대로 패키지를 설치해 준다. 

 

 

이처럼 하나의 가상환경 안에서 pip와 conda를 모두 이용해서 패키지를 설치할 수 있다. 

 

 

 

참고한 포스트

[Anaconda] Conda 명령어, 기본 개념 모음 (tistory.com)

[아나콘다] conda 명령어 목록 (conda command list) (tistory.com)

[Anaconda] conda install 과 pip install 은 똑같은 걸까? (tistory.com)

[기고] 왜 파이썬(Python)인가? (b2en.com)

[Python] pip와 conda의 차이 — vg-rlo (tistory.com)

conda create — conda 4.13.0.post28+5138e307 documentation

Conda channels — conda 4.13.0.post28+5138e307 documentation

Can't execute `conda activate` from bash script · Issue #7980 · conda/conda (github.com)

[Anaconda]가상환경 설치,삭제 (tistory.com)

conda remove — conda 4.13.0.post28+5138e307 documentation

miniconda의 기본 채널 변경 : conda-forge (tistory.com)

 

+ Recent posts