🔥알림🔥
① 테디노트 유튜브 -
구경하러 가기!
② LangChain 한국어 튜토리얼
바로가기 👀
③ 랭체인 노트 무료 전자책(wikidocs)
바로가기 🙌
④ RAG 비법노트 LangChain 강의오픈
바로가기 🙌
⑤ 서울대 PyTorch 딥러닝 강의
바로가기 🙌
Anaconda를 활용한 python 가상환경(virtual env) 설정하기
이번 포스팅에서는 Python을 활용하여 개발 / 혹은 jupyter notebook을 사용할 때 필수인 가상환경 (Virtual Environment) 설정하는 법에 대한 팁과 간단한 강좌를 공유해 드리도록 하겠습니다.
가상환경(Virtual Environment)은 앞서 말씀드린대로 python을 개발할 때 필수라고 할 수 있습니다. 저도 Android 개발만 할 때는 가상환경에 다소 생소했습니다. 하지만, python을 다루게 되면서 가상환경이 왜 필요한지에 대해 깨닫게 되었습니다.
가상환경(Virtual Environment)이란?
가상환경은 말 그대로 가상의 개발 환경을 만들어 주는 것입니다. 들어 보셨을지는 모르겠지만, 가상머신(Virtual Machine)을 이용해 os를 가상으로 올려서 윈도우 환경이나 리눅스 환경을 만들어 개발을 하는 경우가 있습니다. 이와 마찬가지로, python 을 개발할 때는 다양한 package 를 import해서 사용하는 경우가 많습니다. 아래 예제를 본다면,
import tensorflow as tf
device_name = tf.test.gpu_device_name()
if device_name != '/device:GPU:0':
raise SystemError('GPU device not found')
print('Found GPU at: {}'.format(device_name))
# Found GPU at: /device:GPU:0
tensorflow라는 패키지(package)를 import해서 사용하고 있습니다.
그럼 왜 그냥 설치해서 사용하면 되지, 굳이 가상환경을 만들어서 새로 패키지 설치를 하는 번거로움이 있으면서도 가상환경에서 개발 할까요?
다양한 이유가 있겠지만, 제가 생각하는 가장 중요한 이유는 python 버젼 관리와 패키지 충돌 방지가 있습니다.
python은 현재 2.x 버젼과 3.x 버젼이 혼용되는 과도기에 있고 (물론, 요즘엔 대다수의 프로젝트들이 3.x로 많이 업그레이드를 하고 이를 support 하고 있습니다), 때론, 2.x 버젼의 python 환경에서 프로젝트를 개발해야할 때도 있고, 3.x버젼의 python 환경에서 개발해야할 때도 있습니다. 이럴 때마다, uninstall과 install하면서 python 버젼을 바꿀 수는 없을 것입니다.
두번째로, 프로젝트별로 필요한 python 패키지만 설치해서 사용하면 되는데, 가상환경이 아닌 곳에 패키지를 몽땅 설치해버리면 불필요한 패키지까지 설치된 환경이 될 것이고, 때론 dependency또한 꼬여버릴 수 있습니다. (마치, python 2.x 와 python 3.x 가 모두 설치 되었을때처럼 말이죠)
이러한 이유들로 프로젝트별로 각각의 가상환경을 만들고 이 환경에서 개발하는 것이 바람직합니다.
가상환경 설치하기
가상환경을 설치하는 방법은 몇가지가 있습니다. virtualenv, pyenv를 통해 만드는 방법도 있겠지만, 이번 포스팅에서는 Anaconda를 이용해 가상환경을 만들고 이를 관리하는 방법을 알아보겠습니다.
참고로, Anaconda는 python을 위해 만들어진 open source 입니다.
우선 Anaconda 설치를 위해 Anaconda Download Link에서 설치 파일을 다운로드 받으시고 설치 해 주시면 됩니다
Anaconda를 설치하셨으면, 터미널에서 conda라는 명령어를 통해 가상환경을 만들고, 패키지 관리를 하실 수 있습니다.
Anaconda 기본 명령어 살펴보기
설치된 패키지 목록 보기
conda list
단일 패키지 설치
conda install pandas
2개 이상의 패키지 설치
pandas, numpy, tensorflow와 같이 2개 이상의 패키지를 설치할 때는 다음과 같이 입력해 주면 됩니다.
conda install pandas numpy tensorflow
단일 패키지 업데이트
conda update pandas
설치된 패키지 모두 업데이트
conda upgrade --all
패키지 제거
conda remove pandas
설치된 패키지 검색
검색하고자 하는 키워드 양옆에 *를 씌워주시고 ‘ ‘로 묶어서 검색해 주시면 됩니다.
conda search '*pandas*'
가상환경 만들기
가상환경을 만드는 방법 또한 매우 간단합니다.
예제 내용의 편의상 가상환경 이름은 my_python_env 로 하겠습니다.
가상환경 생성
conda create -n my_python_env
이렇게 하면 my_python_env의 이름으로 가상환경이 만들어 졌습니다.
만약, 가상환경을 만들면서 추가로 패키지도 install하고 싶다면 뒤에 패키지를 붙여주면 됩니다.
conda create -n my_python_env pandas tensorflow
python 의 버젼도 명시해서 설치해 줄 수 있습니다. 명시를 하지 않는다면, 가장 최신 버젼의 python 이 설치 됩니다.
python 2 설치
conda create -n my_python_env python=2
python 3 설치
conda create -n my_python_env python=3
python 3.4 설치
conda create -n my_python_env python=3.4
가상환경 시작 / 종료
가상환경을 만들기만 해서는 바로 동작하지 않습니다. 가상환경으로 진입해야 겠죠?
mac/linux 계열은 source라는 명령어를 앞에 붙여주어야 하고 windows 계열은 바로 activate my_python_env 를 입력해 주시면 됩니다.
mac/linux
source activate my_python_env
windows
activate my_python_env
아래와 같이 나온다면, 성공적으로 my_python_env에 진입한 것입니다. 앞에 (my_python_env)가 붙어야 합니다!
deactivate 이라는 명령어로 가상환경을 종료할 수 있습니다.
mac/linux
source deactivate
windows
deactivate
가상환경 내보내기 (export) / 불러오기 / 리스트 / 제거하기
가상환경을 .yaml 파일로 내보내서 저장을 할 수도 있고, 이를 나중에 활용해서 새로운 가상환경을 만들 수 있습니다.
.yaml 파일로 저장
conda env export > my_python_env.yaml
.yaml 파일로 새로운 가상환경 만들기
.yaml 파일에서 미리 저장해 둔 가상환경 설정을 그대로 가져와서 다른 이름의 동일한 가상환경을 만들 수 있습니다.
conda env create -f my_python_env.yaml
가상환경 리스트 출력
그 밖에 conda 에 설치된 가상환경 리스트도 볼 수 있습니다.
conda env list
가상환경 제거하기
가상환경을 제거하려면 다음과 같이 입력하면 됩니다. (my_python_env 에 제거하려는 가상환경 이름 입력)
conda env remove -n my_python_env
추가로 하나 더! (jupyter notebook, nb_conda)
Jupyter notebook는 브라우져 상에서 markdown, text, code, 시각화등등 다양한 기능을 할 수 있도록 해주는 매우 중요한 패키지 입니다.
conda install jupyter notebook
또한, jupyter notebook에서 python 패키지를 관리할 수 있도록 해주는 nb_conda도 설치해 줍니다.
conda install nb_conda
nb_conda가 설치 되었다면, jupyter notebook에서 상단에 conda 탭이 뜨고, 이 탭안에서 개별 패키지 관리를 브라우져 상에서 할 수 있습니다. 또한, 새로운 python notebook 을 만들 때도 미리 설정해 둔 가상환경으로 만들 수도 있구요. 새로운 패키지도 브라우져상에서 할 수 있습니다.
마무리
그럼 이상 간단한 Anaconda 설치법 및 이를 활용하여 가상환경을 만들고 다루는 방법에 대해 알아 보았습니다. 다음에 시간이 된다면, jupyter notebook의 활용법에 대해서도 공유해 드리겠습니다. 감사합니다.
댓글남기기