파이썬 가상환경 - 의존성

파이썬 가상환경이란 의존성(dependency)를

관리하기 위한 독립 실행환경입니다.

 

의존성이라는 용어가 다소 생소하게

들릴 수 있습니다만, 너무 어렵게

생각할 필요는 없습니다.

 

파이썬 뿐만 아니라 대부분의 프로그램은

필연적으로 의존성에 관련한 문제에

직면하게 됩니다.

 

첫번째는 언어 자체의 버전에 따른

문제입니다. 예를 들어 파이썬 2.xx와

3.xx은 다릅니다. 앞의 숫자는 메이저

업데이트를 의미하므로 큰 차이가 있죠.

 

파이썬 2와 파이썬 3은 사실상

코드가 다르다고 봐야합니다.

같은 일을 하는데 다른 코드를

짜야 하므로 좀 다른 언어 같기도 하죠.

 

이것이 의존성입니다.

현재 서버의 서비스 중에서 파이썬2를

사용하는 코드가 있다면 시스템에서

파이썬3으로 업그레이드를 하면

좋겠지만 기존 코드가 안돌아 갑니다.

 

파이썬2에 의존해서 운영하기 때문에

시스템을 업그레이드 하기 위해서는

이 의존성을 보장하거나 아니면

코드 자체를 파이썬3에 맞게

업데이트 시켜줘야 합니다.

 

여기서는 선택이 있습니다.

 

과거의 코드(레가시 머신의 코드)를

업데이트 하는 보수작업을 하던가

아예 과거의 코드를 폐기하고

새로운 시스템에 맞게 완전히

코드를 새로 작성하는 것 입니다.

 

둘 중 어느쪽이건 돈이 많이 들어가는

선택으로 그럴바엔 그냥 시스템과

코드에도 손을 대지 않고

쓰는 방법도 있습니다.

 

그런데 또 그게 간단하지 않습니다.

 

운영체제의 업그레이드 과정에서

파이썬 2가 제외되고 파이썬 3으로

업그레이드 되는 일이 있습니다.

 

보통은 과거 버전의 소프트웨어에

지원이 끓기면 그렇게 됩니다.

 

그렇다면 새로운 서버를 만들때

과거 버전의 OS를 깔아야 하는가?

라는 문제가 발생합니다.

기존의 서버라면 그냥 놔두면서

사용해도 될텐데 새로운 서버를

설치할 때 다목적으로 사용하려면

아무래도 최신의 운영체제가

필요할 때가 있습니다.

 

 

*******

 

버전 관리 관리자

이런 골치아픈 문제들은 비단

파이썬만 겪는 문제는 아닙니다.

다른 소프트웨어 예를 들어

자바 백엔드나 노드JS 같은

웹서버에는 필연적으로 발생합니다.

 

운영체제를 비롯하여 프레임워크나

패키지 모듈 등 모든 소프트웨어의

업데이트는 지속적으로 이루어지고

있기 때문입니다.

 

예를 들어 노드JS에서는 NVM으로

(node version manager)

여러 버전 노드 중에서 의존성을

관리할 수 있습니다.

 

파이썬은 가상환경을 사용하여

(python virtual environment)

의존성을 관리합니다.

 

뭔가 다른 이름이지만 하는 일에는

공통점이 있습니다.

각각의 앱에 독립적인 실행환경을

만들어 줌으로써 시스템을 업그레이드

하건 말건 정해진 환경에서만

작동하도록 하는 것 입니다.

 

이것도 따지고 보면 자바의 write once 

run anywhere 와 비슷한 개념인데

코드가 일종의 크로스 환경에서

적응하여 제대로 작동하도록

만드는 작업입니다.

 

리눅스 서버라고 해도 배포판의

종류가 다르고 또 사용하다 보면

여러가지 프로그램을 설치하고

또 환경이 달라집니다.

 

프로그램의 실행을 보장하기 위해서는

독립 환경을 만드는게 필요합니다.

 

파이썬 가상 환경은 그 역할을 수행합니다.

 

최근에는 docker 같은 가상화 플랫폼으로

많이 옯겨가고 있는데 시간이 지날 수록

더 간단하고 더 쉬운 방향으로

진화할 것으로 예상됩니다.

 

이 포스팅에서는 파이썬의 가상환경

모듈 venv 를 사용하는 방법을 알아보겠습니다.

 

실행환경은 ubuntu 리눅스 - wsl2 입니다.

아래 공식 문서를 참고하여 작성합니다.

 

https://docs.python.org/ko/3/library/venv.html

 

venv — 가상 환경 생성 — Python 3.10.0 문서

venv — 가상 환경 생성 소스 코드: Lib/venv/ venv 모듈은 자체 사이트 디렉터리를 갖는 경량 《가상 환경》을 만들고, 선택적으로 시스템 사이트 디렉터리에서 격리할 수 있도록 지원합니다. 각 가

docs.python.org

 

파이썬 가상환경 설치하기

리눅스에는 보통 파이썬3이 설치되어 있습니다.

 

버전부터 확인하는게 좋습니다.

python3 --version

 

pip를 설치합니다.

최신 버전의 패키지를 윈도우에

설치하면 보통 함께 설치되는데

리눅스에는 없는 경우가 있습니다.

sudo apt install python3-pip

venv 모듈로 가상환경을 만듭니다.

디렉토리를 지정하지 않으면

현재 디렉토리에서 생성합니다.

python3 -m venv myVenv

ls로 폴더의 내용을 보면 아래와 같이

독립적인 개발환경을 복사합니다.

bin  include  lib  lib64  pyvenv.cfg  share

source 명령어로 bin 폴더 안의 activate

스크립트를 실행합니다.

 source bin/activate

셸에 (myVenv) 라는 표시가 나타나면

가상환경이 활성화 됩니다.

 

다음의 명령어로 가상환경 폴더가

출력되어야 합니다.

which python3

 

pip 명령어로 numpy 패키지를 설치해보겠습니다.

 

pip install numpy

 

설치된 패키지의 리스트를

확인하려면 아래의 명령어를 사용합니다.

numpy가 나오면 설치가 된 것 입니다.

 

pip freeze

 

 

가상환경을 종료할 때는 deactivate 합니다.

 

deactivate

 

디렉토리를 조사해보면

lib/python(버전)/site-packages 폴더에

패키지들이 설치되어 있는 것을

볼 수 있습니다.

 

*******

 

이제 독립된 가상환경 안에서

파이썬 프로그램을 실행할 수 있습니다.

 

가상환경은 여러개를 만들 수

있으므로 자신이 생각하는 패키지를

설치한 후에 호환성 테스트를

하기에도 좋습니다.

 

여기서는 리눅스 우분투를 기준으로

설명했지만 요령을 알고 공식문서를

참고하면 윈도우 등 다른 OS에서의

설치도 어렵지 않게 할 수 있습니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band