Virtualenv 가상환경

tyhlife·2020년 5월 14일
1
post-thumbnail

가상환경은 말 그대로 가상의 환경을 의미하는데요. 파이썬 프로젝트를 진행할 때는 버전 관리패키지 충돌 방지 를 위해 프로젝트 별로 각각의 독립된 가상환경을 개발을 하는 것이 좋습니다.

가상환경을 만들어 줄 수 있는 도구들은 여러가지가 있는데요. 대표적으로 virtualenv, Anaconda 등이 있습니다. 오늘은 virtualenv 가상환경을 사용하는 방법에 대해서 포스팅해보려고 합니다.

Anaconda 를 통해 가상환경을 만드는 방법은 제 블로그 에 잘 정리해놓았으니 참고바랍니다 :)


1. Python Package Manager

python을 이용하시는 분들은 pip install 이라는 명령어가 아주 익숙할 텐데요. 가상환경에 대해 이야기하기 전에 pip (python package manager) 에 대해서 먼저 이야기 해보겠습니다.

pip 은 파이썬 관련 오픈소스 패키지들이 모여있는 저장소인 PyPI 로 부터 패키지를 받아 설치하는 패키지 관리 도구 입니다.

보통 프로젝트를 진행하기 전에 virtualenv 를 통해 가상환경을 만듭니다. 만들어진 독립된 가상환경에 pip 를 통해 PyPI 로 부터 패키지를 설치합니다.

pip 이전에 가장 기초적인 패키지 매니저인 easy_install 이 있는데요. easy_install 로 부터 pip 을 다운받을 수 있습니다. 아래의 명령어를 통해 pip 을 다운받을 수 있습니다.


sudo easy_install pip

2. virtualenv 설치하기

pip 을 성공적으로 다운받았다면 virtualenv 을 다운받아 봅시다.

sudo pip install virtualenv

pipvirtualenvsudo 를 통해 global 하게 다운 받았습니다. 이 후에는 가상환경을 구축하고 독립된 환경에 패키지를 설치해보겠습니다.


3. 가상환경 생성 및 실행하기

가상환경을 만드는 방법은 아주 간단합니다. 먼저, 프로젝트를 진행할 디렉터리로 이동합니다.

cd ./my_project_folder

그 후 아래의 명령어를 통해서 env 라는 이름의 가상환경을 만듭니다. 프로젝트 디렉터리 내부에 env 라는 파일이 생성된 것을 확인할 수 있습니다.

virtualenv env

env 로 들어가보면 3개의 파일 (bin, lib, pyvenv.cfg) 가 생성된 것을 볼 수 있습니다.

이제 가상환경을 실행시켜봅시다. (env) 라는 프롬프트가 앞에 붙게 된 것을 확인할 수 있습니다.

source env/bin/activate


4. 가상환경에 패키지 설치하기

독립된 가상환경에 패키지를 설치해봅시다. 앞서 설명한 pip 을 활용해봅시다.

pip install request

프로젝트 폴더의 아래의 경로를 들어가서 확인하면 설치했던 request 패키지가 global 하게 설치된 것이 아니라 가상환경 폴더 안에만 담겨있는 것을 볼 수 있습니다.

cd env/lib/python3.7/site-packages

ls -al


5. 가상환경의 패키지 목록 내보내고 다운받기

pip list 를 통해 패키지 목록을 한번 살펴봅시다. 가상환경을 설치 할 때 기본적으로 깔려지는 패키지와 조금 전에 설치했던 request 가 있는 것을 볼 수 있습니다.

아래의 명령어를 통해서 가상환경 내부에 설치된 패키지들을 내보내 봅시다.

pip freeze > requirements.txt

이 후 requirements.txt 파일을 열어봅시다. 패키지가 잘 내보내 진 것을 확인할 수 있습니다.

requirements.txt 에 있는 패키지를 한번에 다운받을 수도 있는데요. 임의로 위 파일을 수정해보았습니다.

이 후 아래의 명령어를 통해 requirements.txt 내부에 존재하는 패키지를 다운받아 보겠습니다. 여기서 -r 의 의미는 해당 패키지를 다운을 위해 의존적인 패키지들도 함께 다운받는 다는 뜻 입니다.

pip install -r requirements.txt

env/lib/python3.7/site-packages 로 들어가서 가상환경 내부에 설치된 패키지 목록들을 확인해보면 tensorflow 패키지가 설치된 것을 확인할 수 있습니다.

이를 통해 다른 프로젝트와 독립적인 가상환경을 구축할 수 있습니다.


6. 가상환경 종료 및 제거하기

아래의 명령어를 통해서 가상환경을 종료할 수 있습니다. 프롬프트가 (base) 로 다시 바뀌었습니다.

deactivate

가상 환경 제거는 단순히 가상 환경을 비활성화하고 모든 내용이 포함 된 환경 폴더를 삭제하면됩니다.

sudo rm -rf env

7. 기타

7.1 가상환경을 Git에는 업로드 하고 싶지 않을 때

가상환경을 굳이 Git 과 같은 버전 관리 시스템에 올릴 필요는 없습니다. 이 때는 아래의 명령어를 통해서 버전 관리에서 제외합니다.

echo '.venv' >> .gitignore

0개의 댓글