상세 컨텐츠

본문 제목

Python 가상 환경 관리 4종 - venv / virtualenv / ipykernel

카테고리 없음

by 리치윈드 - windFlex 2022. 6. 17. 22:37

본문

반응형

파이썬 가상환경 (Python Virtual Evironment). Conda, Venv, Virtualenv, freeez에 대해서 알아보자.

가상환경 생성 관리를 위해 가장 많이 사용되는 툴로써, `conda` , `venv` 등이 있다. 그러나 우리는 환경에 따라서 이들을 사용할 수 없는 환경이 주어지기도 한다. 예를 들면, conda를 지원하지 않는 container 이미지 등에서 작업을 해야 하는 경우이다. 또한 종종 venv가 잘 동작하지 않거나 에러를 발생하는 경우도 있다. 이러한 경우, 기존 python2.x에서 사용하던 추가패키지로 `virtualenv`를 설치하여 사용할 수 있다. 사용하는 방법을 거의 비슷하므로 옵션의 차이 정도만 필요할 때 참조하여 사용하면 되겠다. 

 

 

출처:  https://django-easy-tutorial.blogspot.kr/2015/08/python-virtual-environment-setup-in-ubuntu.html
가상환경을 생성하면, 서로 다른 버전과 패키지를 독립적으로 구성이 가능하다.

1. venv

Venv Python3의 가상환경을 관리하는 가장 기본이 되는 관리도구이다. Python 2.x에서는 기본지원이 없었는데, python3.x로 변경되면서 python 자체에서 기본지원하도록 기본 패키지화 되었다. 기본 도구인 만큼 알아두면 많은 도움이 된다. 

기본 구문은 다음과 같다. 

python3 -m venv /path/to/new/virtual/environment
`/path/tonew/virtual/environment`는 새로운 환경을 생성한 경로와 이름이다. 단순 가상환경의 이름만을 표기하면, 현재 디렉토리의 하위에 해당이름의 디렉토리가 생성된다. 

가상환경은 python의 명령어 및 설정정보를 다른 디렉토리에 설치/복사/생성해 둔 묶음이다. 그리고, 이후에 가상환경으로 변경하면 기본 root_dir을 가상환경의 디렉토리도 임시 변경해 둔것이다. 즉, 추가적인 python version과 하위에 설치된 라이브러리들을 설치해 두고, 시스템에게 python의 기본 실행위치를 속여서 처음부터 python이 이 환경이라고 OS를 인식시키는 것이다. (docker/container도 이와 비슷한 개념에서 출발 했다.)

 

  • 새로운 디렉토리를 생성하고, 해당 디렉토리에 python 등 필수 패키지를 설치하는 것이 생성과정이며,
  • 상기 서술한 기본 root_dir을 변경하는 작업들을 수행하는 것이 `activate`이며, 원복하는 것이 `deactivate`이다. 

 

python3 -m venv <venv name>

or

python -m venv <venv name>

그러나, 종종 venv가 잘 동작하지 않는 경우가 있다. 

 

2. conda

conda create를 통한 가상환경 생성/관리. venv 대비 상대적으로 관리가 쉽다.

conda 설치방법은 아래 펼치는 글

더보기

1. conda 설치파일 다운로드

다음 사이트 URL을 접속하여 설치하고자 하는 버전에 맞게 다운로드 받는다. 예를 들면, Linux의 경우 다음과 같이 wget을 통해서 다운로드 받으면 편할 것이다. 

`$ wget https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh`

 

2. 설치파일 실행

다운로드 받은 설치 파일을 실행해 주자. Linux는 다음과 같다. 

`$ bash Anaconda3-2022.05-Linux-x86_64.sh`

 

3. 환경 설정

설치가 완료되었다면, 환경파일 PATH로 등록하여 사용하기 쉽게 만들어 주자. 

`$ export PATH=~/anaconda3/bin:~/anaconda3/condabin:$PATH`

매번 PATH를 실행하기 귀찮다면, 실행 시 시작될 수 있도록 ~/.bashrc의 마지막에 위의 코드를 삽입하고/저장한다. 

`$ nano ~/.bashrc` --> 마지막 라인에 위 export ... 삽입

 

4. 패키지 설치 및 가상환경 관리

`$ conda install cudnn`

*가상환경 관리는 아래 내용 참조

conda를 통해서 패키지를 관리하는 경우라면, 가상환경에 대한 관리도 conda를 사용하는 것이 가장 쉬운 편이다.

  • 가상환경 생성
conda create -n new_env python=3.7
구문 형식 : conda create -n <환경명> python=<버전(ex:3.5이나 3.7 등)>

 

  • 가상환경으로 변경 (가상환경으로 진입)
conda activate new_env
    or
activate new_env
  • 원래 환경으로 복귀 (가상환경에서 나옴)
conda deactivate
      or
deactivate
  • 패키지 설치 (가상환경으로 진입 후)
conda install pandas
    or
pip install pandas
  • 설치된 패키지 확인
conda env list

conda 는 pip등에서 관리하지 않는 패키지도 관리해 준다. 이 때문에 python 자체가 아니더라도 관련된 환경/설치 파일을 동시에 설치 할 수 있다. 대표적으로, GPU 관련된 CUDA toolkit, cuDNN등도 conda를 사용하여 설치할 수 있다.  (대박~!)

conda install cuDNN 실행하면 다음과 같이 최신 cuda와 cudnn을 한번에 설치할 수 있다.

 

그러나, conda를 지원하지 않는 경우도 다수 존재하며, conda에서는 설치할 수 없는 패키지들도 존재하기 때문에 가급적, venv와 다음에서 설명할 virtualenv도 함께 숙지해 두면 좋을 것이다. 

 

3. virtualenv

python virtualenv 가상환경 관리자

`venv`가 에러가 발생하는 경우 virtualenv를 사용하자

python -m virtualenv <venv name>
virtualenv가 설치되어 있지 않다면, pip 로 설치해 주자. `pip install virtualenv`

 

 

virtual env를 생성하였다면, 사용하는 환경을 새로운 환경 `new_env`로 변경해 주자.

source new_env/bin/activate
새로운 버추얼 환경의 이름이 `new_env`인 경우이다. 

 

새로운 virtual env 환경에서 필요한 패키지를 설치해 주자. 다음은 tensorflow를 설치하는 예이다.

pip install tensorflow==2.4.1

 

설치가 모두 완료 되었다면, 새로운 환경에서 빠져나온다.

deactivate

pip freeze

현재 사용하는 library들을 고정하고, 리스트를 `requirements.txt`로 내보낸다. 

pip freeze -l > requirements.txt

내보내진 requirements.txt는 이후 아래와 같은 명령어로 일괄 설치가 가능하다. 

pip install -r requirements.txt
`-r`옵션은 `--requirement`의 축약 버전이다.

 

다음은 requirements.txt의 예시이다. requirements.txt에는 다음과 같이 필요할 패키지와 버전이 명시되어 있다. 이러한 정보를 이용하여 명확하게 동일한 설치환경을 구축하고자 하는 것이 가상환경을 관리하는 목적이라 하겠다. 

더보기

llvmlite==0.36.0
matplotlib==3.4.2
numba==0.53.1
numpy==1.20.3
scikit-learn==0.24.2
scipy==1.7.0
sklearn==0.0
timm==0.4.5
torch==1.9.0
torchaudio==0.9.0
wget==3.2
zipp==3.4.1

 

 

4. ipykernel - Jupyter Notebook커널로 등록하자

 

 

만약 새로운 환경을 Jupyter Notebook 또는 Jupyter Lab에서 Kernel로 등록하고자 하는 경우, `ipykernel`을 사용할 수 있다. 

pip install ipykernel
python -m ipykernel install --user --name new_env --display-name new_env_kernel
ipykernel 명령어는 다음과 같은 유형이다:   `ipykernel install --user --name <venv_name> --display-name <표시할 이름> 

 

jupyter kernelspec uninstall 가상환경이름
ex) jupyter kernelspec uninstall python-ml
반응형

댓글 영역