Module

  • 독자적인 기능을 갖는 구성요소
  • 파이썬에서는 하나의 파일이 모듈
  • 파이썬에서는 C나 Fortran 같은 언어로도 모듈을 작성하는 것이 가능
    • 대표적으로 numpy 모듈은 c언어로 작성됨

종류

  • 표준 모듈: 파이썬이 제공하는 모듈
  • 사용자 정의 모듈: 개발자가 만든 모듈

모듈 사용

  • 다른 모듈을 가져와서 사용을 할 때는 import 구문을 이용
    • import 모듈이름
  • 확장자는 생략
  • 모듈에 있는 데이터는 모듈이름.데이터의 형태로 호출
  • import 방법
    • import 모듈이름: 모듈의 내용 전체를 모듈 이름으로 묶어서 가져오는 것으로 모듈이름.데이터의 형태로 사용
    • from 모듈이름 import 데이터를 나열: 모듈에서 데이터만 가져온 것으로 이 때 가져오는 데이터는 현재 모듈에 로드가 되기 때문에 앞에 모듈 이름을 붙여서 사용할 필요가 없음
    • from 모듈이름 import *: 모듈의 모든 데이터를 현재 모듈에 추가
    • import 모듈이름 as 새로운이름: 모듈의 데이터를 새로운 이름으로 묶어서 가져오는 것
    • from 모듈이름 import 데이터 as 새로운이름: 데이터에 새로운 이름을 부여해서 사용
  • 파이썬에서는 모듈을 메모리에 모두 적재시킨 후 사용하기 때문에 여러 번 import 해도 실제로는 한 번만 import 됨
  • 모듈을 강제로 재적재하고자 하는 경우는 imp 모듈의 reload 함수에 모듈 이름을 대입하면 됨
  • 현재 적재된 모듈을 확인하고자 할 때는 sys 모듈을 import 하고 sys.module 속성을 확인하면 dict 자료형으로 모듈 이름을 확인할 수 있음
  • 모듈을 찾는 순서는 sys 모듈의 path 속성을 확인하면 됨
  • 모듈을 찾는 위치를 추가하고자 하는 경우는 sys.path.append("검색할 경로") 또는 PYTHONPATH 라는 환경변수에 검색 경로를 추가해도 됨
import sys
import mymodule

# 현재 디렉터리를 path에 추가
sys.path.append("./")
print(mymodule.mydata)

Package

  • 모듈은 하나의 소스 파일
  • 모듈 단위로 배포를 할려고 하면 너무 많은 파일을 배포를 해야 하는 경우가 발생
  • 관련된 모듈을 묶어서 배포할 수 있는데 이 단위가 package
  • 일반적으로 package는 디렉터리와 유사
  • 패키지를 만들고자 할 때는 소스 파일이 존재하는 디렉터리에 __init__.py 파일을 만들어주면 파이썬은 이를 패키지로 간주
  • __init__.py 파일에는 파이썬 코드를 작성할 수 있음
  • 패키지에서 모듈 가져오기
    • from 패키지이름 import 모듈이름

site-packages

  • 파이썬의 패키지가 저장되는 디렉터리
  • pip로 설치한 패키지들이 저장됨

외부 패키지 설치 - terminal이나 cmd창에서 수행

  • 기본 설치(최신 버전): pip install 패키지이름
  • 기존 패키지 업그레이드: pip install 패키지이름 --upgrade
  • 특정 버전 사용: pip install 패키지이름=버전
  • 특정 버전 이상 사용: pip install 패키지이름>=버전
  • 파이썬을 설치하고 pip를 업그레이드 한 적이 없으면 설치는 되는데 경고가 발생하는 경우가 있는데 이 경우 python -m pip install --upgrade pip 명령을 이용해서 pip를 업그레이드 하면 됨
  • pip 명령으로 패키지를 설치할 때 관리자 권한을 요구하는 경우가 있는데 이 경우 관리자가 아니면 뒤에 --user를 붙여서 설치하면 됨
  • 아키텍쳐에 따라서 설치가 안되는 패키지가 있을 수도 있음
  • 관련 패키지를 자동으로 설치를 하는데 원래 설치해야 하는 패키지보다 더 상위 버전의 패키지가 설치된 경우 제대로 설치가 되지 않을 수 있음
  • windows에서 패키지를 설치할 때는 vc++ 재배포 패키지를 설치해야 한다고 하거나 jdk를 설치해야 한다고 할 때도 있음
  • anaconda 배포판은 pip 대신 conda 라는 명령을 이용해 패키지 설치 가능
  • 현재 사용 중인 패키지 이름을 내보내기: pip freeze > 파일명(관습적으로 requirements.txt)
  • 패키지를 파일에서 읽어서 설치: pip install -r 파일명
  • 패키지 다운로드: pip download 패키지이름
    • 인터넷을 사용할 수 없는 폐쇄망에서 패키지를 설치해서 사용하고자 하는 경우 다운로드받아서 가지고 가서 설치

파이썬 파일이 많을 때 entry point(프로그램 시작점) 만드는 방법

  • 파이썬의 entry point: __main__.py 파일
    • 디렉터리에 저 파일이 있으면 python 디렉터리이름을 쓰면 저 파일을 실행
    • 디렉터리로 존재하지 않고 zip 압축되어도 마찬가지

파이썬 배포 프로그램 생성

  • 서버 프로그램의 경우는 대부분 요즈음은 도커 이미지로 만들어서 배포를 하기 때문에 배포 프로그램을 잘 만들지 않음
  • distutils 같은 프로그램을 이용해서 배포판을 만들 수 있음