본문 바로가기

Python

virtualenv를 활용한 가상환경 만들기

Python

가상환경은 말 그대로 가상의 환경을 의미합니다. 파이썬 프로젝트를 진행할 때는 버전 관리 와 패키지 충돌 방지를 위해 프로젝트별로 각각의 독립된 가상환경을 개발을 하는 것이 좋습니다. 가상환경을 만들어 줄 수 있는 도구들은 여러가지가 있는데요. 대표적으로 virtualenv, Anaconda 등이 있습니다. 오늘은 virtualenv 를 활용해 가상환경을 사용하는 방법에 대해서 포스팅해보려고 합니다.

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 을 다운받아 봅시다. pip 와 virtualenv 는 sudo 명령어를 통해 global 하게 다운 받았습니다. 이 후에는 virtualenv 를 활용해 가상환경을 구축하고 독립된 환경에 패키지를 설치해보겠습니다.

sudo pip install virtualenv

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

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

cd ./my_project_folder

 

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

virtualenv env

 

설치된 가상환경을 실행시켜봅시다. (env) 라는 프롬프트가 붙은 것을 확인할 수 있을텐데 가상환경이 활성화됐다는 것을 의미합니다.

source env/bin/activate

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

독립된 가상환경에 패키지를 설치해봅시다. 앞서 설명한 pip 을 활용해봅시다. pandas 1.3.4 버전을 다운받아보겠습니다.

pip install pandas==1.3.4

 

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

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

ls -al

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

패키지 목록을 내보내기 전에 가상환경내에 설치된 패키지 목록을 살펴봅시다. 이 중에서는 기본적으로 설치되어 있는 패키지도 있고, 우리가 임의로 설치해준 pandas 패키지도 있습니다. 또한, numpy 같이 pandas 패키지를 설치하면서 함께 설치된 패키지도 있습니다.

가상환경내에 설치된 패키지를 내보내봅시다. 

pip freeze > requirements.txt

 

이후에 requirements.txt 파일을 한번 열어봅시다. 설치된 패키지가 잘 내보내진 것을 확인할 수 있습니다. 하지만 이 방법은 의존성에 따라 설치된 패키지 (numpy==1.21.3, python-dateutil==2.8.2) 도 함께 담기게됩니다. 실제로 우리가 설치한 패키지는 pandas==1.3.4 가 전부인데 말이죠.

vi requirements.txt

의존성있는 패키지 목록은 제외하고 가상환경에 실제 설치된 패키지 목록만을 내보내려면 아래 명령어를 사용하시면 됩니다. 이 방법을 더 추천드립니다.

pip list --not-required --format=freeze > requirements.txt

 

pandas 에 의존성있는 패키지는 제외하고 가상환경을 복원하기위해 설치해야될 패키지만 깔끔하게 내보내진 것을 확인할 수 있습니다.

requirements.txt 파일에 있는 패키지를 한번에 내려받을 수도 있습니다. 임의로 requirment.txt 파일의 내용을 수정한뒤 패키지를 내려받아보겠습니다.

아래의 명령어를 통해서 requirements.txt 에 있는 모든 패키지를 가상환경에 한번에 설치할 수 있습니다.

pip install -r requirements.txt

 

6. 가상환경 종료하기

실행한 가상환경을 종료해봅시다. (env) 로 되어있던 프롬프트가 다시 (base) 로 변경된 것을 확인할 수 있습니다.

deactivate

7. 가상환경 제거하기

아래의 명령어를 통해서 설치된 가상환경을 통채로 제거할 수 있습니다. 가상 환경 제거는 단순히 가상 환경을 비활성화하고 모든 내용이 포함 된 환경 폴더를 삭제하면됩니다.

sudo rm -rf env

'Python' 카테고리의 다른 글

Anaconda를 활용한 가상환경 만들기  (1) 2021.11.14
MySQL과 Flask API를 연동하기  (0) 2021.10.26
Flask를 설치하고 간단한 API 만들기  (0) 2021.10.26