본문 바로가기
알아두면쓸데있는신기한잡학사전/고군분투흔적들

[Web] Python - python package

by 대범하게 2022. 8. 22.
반응형

파이썬 패키지

파이썬 패키지(package) 설치하기

패키지는 모듈(일종의 기능들 묶음)을 모아 놓은 단위이고, 이런 패키지의 묶을을 라이브러리라고 한다.

1. 가상 환경(virtual environment)이란?

=> 같은 시스템에서 실행되는 다른 파이썬 응용 프로그램들의 동작에 영향을 주지 않기 위해, 파이썬 배포 패키지들을 설치하거나 업그레이드하는 것을 가능하게 하는 격리된 실행 환경

 

- 한 프로젝트에서 쓰는 패키지의 수는 다양하고, 서로 다른 프로젝트에서 요구하는 패키지의 목록이나 버전이 다를 수 있다.

- 이렇게 요구사항이 다른 두 프로젝트를 한 컴퓨터에서 진행해야하는 상황에서 각 프로젝트마다 가상환경을 만들고 그 안에 필요한 패키지를 설치해주면 필요한 버전이 다르거나 두 패키지가 충돌을 일으키는 등의 문제 없이 관리할 수 있다.

 

2. 가상 환경 설치 및 확인

=> 새 프로젝트에서 설치하는 패키지가 많다면 가상환경을 새로 잡아주는게 좋다.

 

프로젝트 루트 디렉토리에서 다음 명령을 실행하여 새 가상환경을 만든다. 

python3 -m venv .venv
# python3 명령이 통하지 않는 경우 (MS Windows에서 이런 경우 있음)
py -3 -m venv .venv

 

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

# Shell 환경 (MacOS/Linux/Windows bash)
source .venv/bin/activate
# PowerShell (Windows 1x)
.venv\Scripts\activate

 

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

 

Windows의 경우 보안 문제로 활성화가 실패할 수 있습니다. 이 경우 PowerShell 환경에서 다음 명령을 실행하여 서명된 외부 코드의 실행을 허용하여 문제를 해결할 수 있습니다.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

 

3. pip(python install package) 사용 - requests 패키지 설치해보기

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

 

pip list 명령으로 현재 설치된 package들의 목록을 볼 수 있다.

pip install <package_name> 명령으로 원하는 패키지를 설치 할 수 있다. 

- 다음 명령을 실행하여 requests 패키지를 설치한다.

pip install requests

오류떠서 다시 했는데 다 잘 설치가 되었구마~!


패키지 사용하기

- 자바스크립트에서 ajax를 써서 GET 요청을 보냈던 것처럼, 파이썬에서는 아래 코드처럼 requests 패키지를 이용하여 서울시 대기 OpenAPI에서 미세먼지 정보를 받아올 수 있다. 

 

requests 사용해보기

# 서울시 대기 OpenAPI에서 미세먼지 정보

import requests # 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 값


# 모든 구의 IDEX_MVL 값 프린트하기
gus = rjson['RealtimeCityAir']['row']

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


# 0.014
# 중구 117.0
# 종로구 129.0
# 용산구 207.0
# 은평구 160.0
# 서대문구 104.0
# 마포구 157.0
# 광진구 89.0
# 성동구 114.0
# 중랑구 101.0
# 동대문구 -99.0
# 성북구 114.0
# 도봉구 107.0
# 강북구 114.0
# 노원구 202.0
# 강서구 240.0
# 구로구 192.0
# 영등포구 129.0
# 동작구 182.0
# 관악구 205.0
# 금천구 175.0
# 양천구 210.0
# 강남구 112.0
# 서초구 109.0
# 송파구 85.0
# 강동구 95.0
# IDEX_MVL 값이 60 미만인 구의 이름과 값 프린트하기
import requests # requests 라이브러리 설치 필요

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

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

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