0. 왜 가상환경이 필요한가요?
가상환경이 꼭, 항상, 누구에게나 필요하진 않다.
(*사실 이글을 읽는다면 가상환경이 뭔지도 모를 확률이 더 높다.)
특히, 개인적으로 개발 업무를 하거나 한개의 프로젝트를 한다면 굳이 할 필요는 없다.
하지만, 아래의 여러가지 이유로 가상환경을 구성하는 것을 권장한다.
- 2인 이상이 개발업무를 할 경우
- 여러개의 프로젝트를 진행할 경우
- 기존의 프로젝트에 대한 update 내용을 테스트할 경우 등
1. venv 가상환경이 도대체 뭔가요?
작업을 원활히 하기위해 책상 주변에 필요한 물품들을 정리하듯,
우리는 프로젝트를 완수하기 위해 우리가 작성한 패키지뿐 아니라
이미 다른 사람들이 같은 목적으로 작성해 둔 패키지도 사용하게 된다.
이런 넓고 다양한 인력풀과 패키지 모듈을 통해 더 효율적인 개발을 할 수 있는데,
그렇다보니 작업 환경에 대해 서로 어느정도의 수준을 넘어선 정확한 약속을 해야
오류를 줄이고, 정확한 결과물을 얻을 수 있다.
1) if 2인 이상 개발 업무를 할 경우,
예를 들어 3명의 팀원이 같은 책에 있는 글을 10장씩 나눠서
종이에 옮겨 적는다고 가정해보자.
3명이 처음 모여 의견을 나눌 때, 흰 종이에 검은 펜으로 쓰고
중요한 내용은 빨간색으로 하자고 약속을 했는데,
1번째 사람은 스케치북에 매직으로,
2번째 사람은 A4용지에 모나미 볼펜으로,
3번째 사람은 B5용지에 만년필로 글을 옮겨 적는다면
이 3사람이 작업한 글을 하나로 모았을 때,
한권을 복사한 노트라는 생각이 들까?
빨간색까지 제각각이라면?
아니, 크기가 다른 종이를 한권으로 합칠 수는 있을까?
2) elif 여러개의 프로젝트를 진행할 경우,
또 위와는 조금 경우가 다르지만 여러개의 프로젝트를 진행할 경우,
달라진 기능을 적용하기 위해 기존에 설치된 패키지를 upgrade 해야 하는 경우가 발생할 수 있는데
upgrade 이후 다른 프로젝트가 정상동작하지 않으면....(*이런 문제를 호환성의 문제라고 한다.)
우리는 PC를 따로 한대를 더 사야 하는걸까?
아무튼...이런 이상한 상황들을 피하기 위해 우리는 각각의 구별된 개발 환경인 가상환경(venv)를 사용한다.
2. 가상환경은 어떻게 쓰는건가요?
- 파이썬에서는 아래와 같이 가상환경을 구성할 수 있는 방법이 4가지 정도 있지만,
- virutalenv를 사용한다.
- venv를 사용한다.
- 아나콘다 파이썬을 사용한다.
- 미니콘다 파이썬을 사용한다.
오늘 소개할 방법은 내장모듈인 venv를 이용하는 방법이다.
내장 모듈인 만큼 별도로 설치 하지 않아도 된다.
2-0. 가상환경 구성 전 기본 환경에서의 버전 확인
설정하기에 앞서 기본 환경에서 excel을 다루는 openpyxl 의 버전을 확인해보면
pip freeze | findstr openpyxl
oepnpyxl == 3.0.7 임을 알 수 있다.
(*해당 모듈이 사전에 설치되지 않았다면 내용 확인시 아무런 메세지가 나타나지 않으며,
해당 버전 정보를 미리 보여주는 이유는 가상환경에서 다른 버전이 생성되는 것을 확인하기 위한 검증용 과정이다.)
2-1. workspace(folder)설정 하기
좌측에 작업을 진행할 폴더를 설정하고,
터미널에 python -m venv [가상환경 폴더 설정 이름] 을 입력해보자.
python -m venv excel_edit
#python -m venv [가상환경 폴더 설정 이름]
좌측에 입력한 excel_edit 이라는 폴더가 생긴다.
우측 하단에 작업 영역 폴더를 변경할지에 대한 메세지도 나타나게 되는데 이때 '예'를 선택한다.
2-2. New Terminal(Ctrl + Shift + `(백틱))
New Terminal을 생성해 주면
실제 가상환경으로 만든 excel_edit 폴더 하위에 있는
.\Scripts\Activate.ps1 이 실행된다.
정상적으로 실행이 되고 나면 터미널 창의 경로가 기존과는 달리
폴더 이름앞에 (excel_edit) 이라는 표시가 나타나며 가상환경임을 나타내 준다.
(*폴더 이름 앞에 excel_edit 은 2-1에서 설정한 폴더 이름으로 생성된다.)
2-3. 진짜 가상환경 맞나?
- 새로 생긴 작업환경(가상환경)이 맞는지 의심이 드시는 분들이 있을 것이다.
- 아까 venv를 사용하기 전 적용했던 pip freeze | findstr openpyxl 로 openpyxl의 버전을 확인해보면
처음과는 달리 아무런 결과물도 나타나지 않는다. 실제 가상환경에 openpyxl 이 없기 때문인데,
pip list로 확인해보면 현재 가상환경에 pip와 setuptools 모듈만 설치되어 있음을 알 수 있다.
2-4. 특정버전의 모듈 설치해보기
pip install openpyxl 을 입력하면 최신버전의 poenpyxl이 설치 되지만
pip install openpyxl==3.0.2
openpyxl 의 특정 버전(3.0.2)을 입력할 경우 해당 버전의 설치가 진행된다.
(*로그에서와 같이 잘못된 버전 정보를 입력하게 되면 경고창과 함께 사용가능한 버전 정보를 확인할 수 있다.)
처음 모듈을 설치하기 전과 비교해보면 설치 전(빨간박스), 설치 후(노란박스)
기본 환경과 별도로 원하는 버전의 패키지 모듈이 설치되었음을 확인할 수 있다.
이제 이러한 방법으로 프로젝트별로 원하는 작업을 하면 된다.
약간의 분량 조절 실패로....
설치된 버전에 대한 전달 및 복제 방법에 대해서는 다음 포스팅에 작성해보겠다.
2-5. 가상환경 탈출(종료)하기....내용 추가
포스팅을 완료하고 나니...
가상환경을 쓰는 방법만 알려주고 종료하는 방법을 알려주지 않았다.
방법은 간단한데, deactivate 라고 입력만 해주면 아래와 같이
(excel_edit) 이라는 venv 표시가 사라지고 메인 환경의 인터프리터로 전환된다.
진짜 끝. 버전 관리 및 전달은 다음 포스팅에..
2023.06.03 - [IT 배우기/Python] - venv 가상환경 구성하기 02(모듈 복사)
venv 가상환경 구성하기 02(모듈 복사)
오늘 진행할 내용은 지난번 venv를 생성하는 방법에 이어 2023.05.30 - [IT 배우기/Python] - venv 가상환경 구성하기 01 venv 가상환경 구성하기 01 0. 왜 가상환경이 필요한가요? 가상환경이 꼭, 항상, 누구
to-all-rounder.tistory.com
'Python' 카테고리의 다른 글
10. 파이썬 집합(set) 특징 (0) | 2023.06.27 |
---|---|
09. 파이썬 리스트(list) 특징 (0) | 2023.06.26 |
08. 파이썬 튜플(tuple) 특징 (0) | 2023.06.25 |
07 파이썬 Boolen(참,거짓) (0) | 2023.06.24 |
venv 가상환경 구성하기 02(모듈 복사) (0) | 2023.06.03 |