[VM] Python 을 이용한 VM의 생성과 활용

가상환경 (Virtual environment)

같은 시스템에서 실행되는 다른 파이썬 응용 프로그램들의 동작에 영향을 주지 않기 위해, 파이썬 배포 패키지들을 설치하거나 업그레이드하는 것을 가능하게 하는 격리된 실행 환경. 각 프로젝트마다 가상환경을 만들고, 그 안에 필요한 패키지를 설치해주면, 필요한 버전이 다르거나 두 패키지가 충돌을 일으키는 등의 문제 없이 관리를 할 수 있다.

 

가상환경은 기본적으로 Python 에서 제공하는 도구(ex)'venv') 를 이용하여 생성하나, 다른 플랫폼에서도 유사한 개념을 가진 도구를 제공한다. Node.js의 npm과 yarn 이나 Java의 Gradle 과 같이 의존성을 관리하는 이들의 역할이다.

 

 

가상환경과 의존성 관리 도구의 차이점

가상환경 : 

  • python의 가상환경은 실제로 독립적인 python 실행환경을 제공한다. 
  • 프로젝트 별로 독립적인 Python 해석기와 패키지를 사용할 수 있다. 
  • 시스템 전역 Python 환경과 완전히 격리된 환경을 만든다. 

 

의존성 관리 도구 (npm, Gradle)

  • 의존성 관리 도구는 독립적인 실행 환경을 제공하지 않지만, 프로젝트별로 패키지나 라이브러리를 관리.
  • 프로젝트 디렉토리에 의존성을 설치하여, 각 프로젝트가 독립적으로 필요한 패키지를 가질 수 있게 한다.
  • 특정 언어의 해석기나 런타임 자체를 격리하지는 않는다.

 

npm 이나 Gradle 은 가상환경을 제공하지는 않지만, 프로젝트별 의존성 관리라는 면에서 유사한 기능을 수행한다. 이 도구들은 프로젝트별로 패키지를 설치하고 관리하는 데 중점을 둔다. 즉, npm 이나 Gradle은 Python의 가상환경과는 다른 개념이지만, 프로젝트 별 독립성을 제공하는 유사한 역할을 수행한다.

 

 

VM 활용하기

먼저 가상환경을 생성해보자.

python3 -m venv 가상환경이름

 

가상환경을 생성했다면, 이름으로 디렉토리가 생성되었을 것이다. (로컬에서도 확인 가능)

 

Terminal 에서 다음과 같이 가상환경을 활성화

(venv 를 생성한 곳으로 가서 활성화해야한다)

source .venv/bin/activate

 

 

활성화되면 아래와 같이 프롬프트의 앞부분이 가상환경 directory의 이름이 된다.

prac_python git:(chapter03) source .venv/bin/activate

 

 

가상환경 비활성화

deactivate

 

 

pip

Python Package Index 저장소로부터 파이썬으로 작성된 각종 라이브러리를 설치하고 관리해주는 도구이다.

앱을 설치할 때 앱스토어/플레이스토어를 가듯이, 새로운 프로젝트의 라이브러리를 가상환경에 설치하려면 pip 를 이용하게 된다.

(가상환경은 물론 시스템 전역에서도 사용할 수 있다.)

 

 

pip는 자주 업데이트 되므로 가상환경에서 최신버전의 pip로 업그레이드 해주는 것이 좋다.

전역에서 파이썬 패키지를 설치할 때처럼 pip install 을 이용해 가상환경 안에 라이브러리를 설치해주면 된다.

pip install --upgrade pip
pip --version

 

 

requests 라는 라이브러리를 설치하려면 아래와 같이 Terminal 에 입력하면 된다.

pip install requests

 

 

 

로컬에서 requests 라이브러리를 이용하여  weather.py 파일을 작성하였고, 이를 가상환경에서 실행시켜 보자.

#weather.py
import requests

r = requests.get('http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99')
rjson = r.json()

print(rjson)
print(rjson['RealtimeCityAir']['row'][0]['NO2']) #중구의 NO2 농도

gus = rjson['RealtimeCityAir']['row']


#모든 구의 IDEX_MVL 값 프린트하기
for gu in gus:
    print(gu['MSRSTE_NM'], gu['IDEX_MVL'])

#IDEX_MVL 값이 60 미만인 구의 이름과 값 프린트하기
gus = rjson['RealtimeCityAir']['row']

for gu in gus:
    if gu['IDEX_MVL'] < 60:
        print (gu['MSRSTE_NM'], gu['IDEX_MVL'])

 

 

가상환경을 활성화시킨 python 명령어를 입력하면 출력이 잘 되는 것을 확인할 수 있다.

python weather.py

 

 


ref : 

 

파이썬 pip(Package Installer of python)의 뜻, 사용법

목차 1. pip의 뜻 2. pip를 이용한 패키지 설치 및 제거 3. 설치된 패키지 목록 조회 1. pip의 뜻 파이썬 패키지나 모듈의 패키지 매니저다. Package Installer of python의 약자로 부르는 것 같다. 파이썬으로

ggangtalife.tistory.com