내가 기억하고 싶어서 기록하는 가상환경 커맨드

oogie·2022년 6월 15일
1

오늘은 가상환경을 공부한 김에 아카이브할 겸 가상환경이 뭔지 어떻게 쓰는건지 써보고자 한다.

가상환경이란 무엇인가? 왜 필요한가?

데이터 사이언스를 포함한 다양한 개발을 하다보면 프로그램을 사용해야함은 당연하다.

나 같은 경우 딥러닝을 공부하다보면 python, pytorch, tensorflow, numpy, matplotlib 기타 등등 다양한

라이브러리를 사용하는데 이 패키지들은 버전이 지속적으로 업데이트 된다. 이때 버전에 따라서 사용문법이 달라질 수 있다는 점이 중요하다. 가령 파이썬 3.6에 익숙한 사람이 있고 3.9에 익숙한 사람이 있다면 각자에게 맞는

파이썬을 사용해야 한다. 이때 하나의 버전만 사용하지 않고 특정 버전의 패키지를 모아서 사용가능한데

이를 가상환경이라 한다. 가령 나는 딥러닝을 수행 할때 파이썬 3.9 , 파이토치 1.10 버전을 사용한다면 이 버전의 패키지를 모아서 환경을 구성한다. 만약 딥러닝이 아니라 머신러닝 또는 다른 과제를 수행한다면 특정

라이브러리를 빼고 다른 라이브러리로 구성된 가상 환경을 만들어서 그들을 사용할 수 있다.

사실 이게 가장 중요해지는 지점은 함께 프로젝트를 수행할 때이다. 서로 다른 환경에서 작업한 파일을 공유해서

프로젝트를 수행한다는 것은 말이 안되는 행동이다. 그래서 함께 사용할 라이브러리를 지정하여 가상환경을 구성한 뒤 그 환경에서만 해당 프로젝트를 진행한다. 이것이 가상환경이 정말 중요한 이유이다.

가상환경 커맨드

내가 이제부터 설명할 가상환경의 구축은 anaconda(데싸를 하면 대부분 anaconda를 처음 사용하게 될 것이다)를 기준으로 설명할 것이다. 가상 환경에서 사용되는 커맨드는 anaconda prompt와 컴퓨터의 명령 프로토콜(cmd)을 이용할 수 있는데 anaconda prompt를 기준으로 작성하겠다. 장점이 있다고 생각하기 때문인데 이것은 이후에 얘기하겠다.

conda env list

이 커맨드는 현재 나의 컴퓨터에 어떤 가상환경이 있는지 확인하는 커맨드이다. 대부분의 가상환경 커맨드는

conda env로 시작한다. 결과창에 base라는 가장 기본의 환경이 주어지고 이후 추가로 환경이 있다면 아래 나온다.

현재는 base말고 환경이 없는 상태이다.

만약 커맨드를 사용하지 않고 Gui로 접근하고 싶다면 설치되어있는 anaconda navigator를 실행하고 environments를 눌러주면 본인의 가상환경을 확인할 수 있다.

위에서 현재 내 환경에 설치된 라이브러리와 그 버전을 확인할 수 있으며 새롭게 설치하거나 업데이트할 수 있다.

conda env create -n 환경명

이 명령어는 새로운 환경을 만들어주는데 개인적으로 새로운 환경을 만들때는 커맨드보다 네비게이터를 활용하길 바란다. 그 이유는 버전 선택의
편의성 때문인데, 네비게이터로 환경을 만든다면

위와 같이 파이썬과 R을 고를 수도 있고 버전 설정도 쉽다. 물론 커맨드로도 버전을 설정할 수 있다.

환경이름 옆에 python= 3.9.4 이런식으로 쓰면되지만 그냥 네비게이터가 편하니까 추천한다.

activate 환경명

내가 원하는 환경을 설정하고 싶다면 이 명령어를 입력해야한다. 내가 원하는 환경명을 입력하면 해당 환경이 설정된 것이다.

oogie torch라는 환경을 만들었고 그 환경으로 활성화가 된 것을 확인할 수 있다. 이제부터 입력하는 명령어 및 작업은 다 저 환경에서 이루어진다. 이를 비활성화하고싶다면 conda deactivate를 입력해주면 된다.

conda install packagename

환경을 만들었을 때 파이썬과 정말 필요한 소수의 패키지만 설치되었을 테니 이제 필요한 패키지를 설치 해야한다.위의 커맨드는 내가 원하는 패키지 이름을 설치하는 커맨드이다.

반면 명령 프롬프트로 진행할 때는 pip install 패키지 이름을 입력하는 식으로 패키지를 설치할 수 있는데,

pip install은 별 생각없이 최신버전의 패키지를 깔아버린다. 이때 호환성 문제가 발생할 수 있는데

conda install은 알아서 호환성을 고려하여 패키지의 버전과 환경을 맞춰준다.

앞서 conda prompt를 추천한 이유가 이것이다. 커맨드로 설치할 때는 conda install을 사용하길 추천한다.

물론 커맨드말고 네비게이터로 설치할 수도 있고 이것도 정말 정말 편하다.

새로 만든 환경엔 pytorch가 없어서 uninstall의 목록에서 검색했을 때 나온다. 원하는 버전에 맞춰 설치하면 된다.

conda create -n 새로운 환경이름 —clone 복사할 환경이름

만약 기존에 있는 환경을 약간 수정하여 새로 쓰고싶다면 위의 커맨드로 기존 환경을 복사하여 환경을 만들 수 있다.

conda remove -n 환경이름 --all

이부분도 중요한데 내가 필요하지 않은 환경을 지우는 커맨드다. 로컬 환경이 좋더라도 불필요한 환경을 여러개 두는 것은 좋지 않으므로 가급적 사용하지 않는 환경은 빠르게 지워주는게 좋다. 물론 네비게이터로도 지울 수 있다.

다 지워진 것처럼 보이지만 가상환경 폴더에 남아있는 잔여패키지가 있을 것이다.

이 파일 경로는 아나콘다에서 가상환경의 패키지를 저장한 곳인데 test가 지워지지 않았고 내부에 잔여파일을 확인할 수 있는데 여기까지 지워주면
완벽하게 지우는 것이다. 참고로 지울때 커맨드나 네비게이터가 켜져있으면 안꺼지니까 끄고 지워야한다.

위의 경로는 현재 존재하는 가상환경의 경로를 기록하는 txt파일의 위치이다. 혹시 경로를 놓쳤다면 참고하면 된다.

conda env export > env.yaml

굉장히 중요한 커맨드인데 내가 쓰고 있는 가상환경의 패키지와 버전을 env.yaml파일로 만들어준다.

파일이 만들어졌다면 확인하면 되는데 나는 코드를 편집할 때 vscode를 사용하기 때문에 vscode로 열어보면

다음과 같이 환경에 대한 정보가 나온다. 사실 나 혼자 작업할 때는 이 파일이 필요없다.

근데 애초에 가상환경이란게 협업에서 중요하듯 위의 파일도 협업에서 필수이다.

상대방의 가상환경을 일일히 따라서 설치하고 만들 수 있지만 위의 파일을 받는다면 해당 파일을

내 가상파일에 대한 정보가 담긴 경로에 두고 conda env create -f 파일명 -n 환경이름 커맨드를 입력하면

파일에 적힌 정보와 똑같은 가상환경을 구축해준다. 간단한 커맨드지만 협업에서 필수적이고 사실 가장 핵심이되는 커맨드이다.

이번에는 가상환경에 대해서 다뤄봤는데 협업이나 프로젝트를 이미 하고있는 분들이라면 잘 쓰고 있겠지만

로컬이 아닌 코랩만으로 프로젝트를 해왔거나 협업을 한적이 없는 분들에게 도움이 되었으면 한다.

요약

1.코랩이 아닌 로컬에서 협업시 가상환경은 필수이다.

2.아나콘다 프롬프트나 네비게이터를 사용하면 편하게 구축가능하다

3.불필요한 환경은 지우자

4.conda env export로 환경을 공유하자

0개의 댓글