Module
- 독자적인 기능을 갖는 구성요소
- 파이썬에서는 하나의 파일이 모듈
- 파이썬에서는 C나 Fortran 같은 언어로도 모듈을 작성하는 것이 가능
종류
- 표준 모듈: 파이썬이 제공하는 모듈
- 사용자 정의 모듈: 개발자가 만든 모듈
모듈 사용
- 다른 모듈을 가져와서 사용을 할 때는 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 라는 환경변수에 검색 경로를 추가해도 됨
Package
- 모듈은 하나의 소스 파일
- 모듈 단위로 배포를 할려고 하면 너무 많은 파일을 배포를 해야 하는 경우가 발생
- 관련된 모듈을 묶어서 배포할 수 있는데 이 단위가 package
- 일반적으로 package는 디렉터리와 유사
- 패키지를 만들고자 할 때는 소스 파일이 존재하는 디렉터리에 __init__.py 파일을 만들어주면 파이썬은 이를 패키지로 간주
- __init__.py 파일에는 파이썬 코드를 작성할 수 있음
- 패키지에서 모듈 가져오기
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 같은 프로그램을 이용해서 배포판을 만들 수 있음