Python 가상환경 - venv

검은머리개발자·2020년 12월 7일
10

Python

목록 보기
1/1

[본 포스팅은 파이썬 도큐먼트 https://docs.python.org/ko/3/tutorial/venv.html를 기반으로 작성되었습니다.]

가상환경이 필요한 이유

  • 파이썬을 조금 써보면 알겠지만 그냥 순수 파이썬을 쓰기보다는 pandas, numpy, matplotlib 등 다양한 패키지를 import해서 사용한다.
  • 보통 처음할 땐 로컬 환경에 pip(혹은 pip3) install {package_name}으로 설치해서 쓰는데 당장 눈앞에 보이는 프로젝트를 진행할 땐 문제가 없지만 여러 프로젝트를 동시에 진행하고 있거나 혹은 한 프로젝트 내에서 패키지 버전이 안 맞으면 문제가 발생한다.
  • 예를 들어, 프로젝트 A는 django 버전 1.11을, 프로젝트 B는 django 버전 2.0을 사용한다고 해보자
  • A를 진행하다가 B를 진행하면 버전 호환이 안 맞아 오류가 발생하므로 django 를 2.0으로 재설치후 진행하다가 다시 A를 하려면 2.0을 지우고 1.11을 재설치해야한다.
  • 이러한 문제때문에 파이썬에서는 가상환경을 활용하여 개발을 하는데 대표적으론 venv와 conda가 있다. (conda랑 venv는 기능적 차이가 좀 있지만 파이썬 3.3부터 venv가 기본 내장되어있어서 나는 venv를 많이 쓴다.)

venv 기본 사용법

  • 가상환경이니 뭐니 해서 어려워보이지만 사용법은 별거 없다.

1. 가상환경 생성

  • python 3.3 이상의 버전 부터는 venv 모듈을 내장하고 있으므로 따로 설치없이 가능하다.
  • 터미널을 열어 자신이 개발하려는 workspace 폴더에 가서 아래 명령어를 입력하자.
python3 -m venv venv-tutorial
  • venv-tutorial은 가상환경 이름이므로 자유롭게 쓰면 된다.
  • 해당 구문을 실행하면 venv-tutorial 이름을 가진 가상 환경 폴더가 생성된다.

2. 가상환경 실행

  • 생성을 했으면 해당 가상환경을 실행해야한다.
  • 실행 소스 파일은 가상 환경 폴더 안의 bin폴더 안에 있다.
source venv-tutorial/bin/activate
  • source 명령어를 통해 activate파일을 실행시켜 가상환경에 진입한다.
  • terminal 앞쪽에 (venv-tutorial)같이 가상환경의 이름이 붙으면 진입에 성공한 것이다.
  • pip list 명령어를 통해 설치된 패키지 버전들을 확인해보면 pip와 setuptools빼고는 아무것도 설치가 안된 깨끗한 상태임을 확인할 수 있다
  • python3로 가상환경을 만들고 진입했으면 pip3 대신 pip명령어를 사용해도 된다.

3. 가상환경 종료

  • 가상환경을 종료하려면 deactivate 명령어를 사용하면 된다.
deactivate
  • 터미널 앞에 가상환경 이름이 사라지면 정상적으로 종료된 것이다.

패키지 설치, 관리를 쉽게해보자 [pip freeze]

  • 가상 환경은 좋긴하지만 환경을 만들때마다 매번 호환되는 패키지를 버전대로 설치하는 것은 굉장히 귀찮은 일이다.
  • pip에선 설치된 패키지를 정리하고 설치하는 루틴을 제공하는데 아래와 같이 사용해보자
  • 먼저 위에 가상환경 설치 과정을 이용해서 envA와 envB 가상환경 2개를 만들어보자
  • envA에 설치된 패키지를 그대로 리스트업해서 envB에 옮기는 과정을 진행해보자
  • 가상환경 생성후 envA에 진입한다.
python3 -m venv envA
python3 -m venv envB
source envA/bin/activate
  • 실험을 위해 matplotlib 패키지를 하나 설치한 후 리스트를 확인해보자
pip install matlplitlib
pip list

  • 위와 같은 패키지들이 설치되었는데 이 패키지들을 리스트업 해보자
pip freeze > requirements.txt
  • 해당 명령어를 실행하면 실행한 위치에 requirements.txt가 생성된 것을 확인할 수 있다. (requirements.txt 파일명은 컨벤션이니 되도록 맞출것)

  • requirements.txt 안에 위와 같이 리스트업 된 것을 볼 수 있다.
  • 이제 envB 가상환경에 진입해서 해당 파일을 install 하면 리스트의 패키지를 모두 설치한다.
pip install -r ./envA/requirements.txt

[설치 완료된 모습]

profile
Coffee, Code, and Conan

4개의 댓글

comment-user-thumbnail
2021년 2월 13일

안녕하세요 ~

답글 달기
comment-user-thumbnail
2021년 2월 18일

유용한 정보네요~^^

답글 달기
comment-user-thumbnail
2021년 7월 19일

잘봤습니다 좋은글 감사합니다 ~

답글 달기
comment-user-thumbnail
2022년 2월 10일

감사합니다~~ 도움 많이 됬어요

답글 달기