on
패키지(__init__, __all__, 서브패키지, 외부패키지)
패키지(__init__, __all__, 서브패키지, 외부패키지)
패키지
: 모듈을 모아 놓은 디렉토리
패키지 만들기 프로젝트 폴더 위에 마우스 우클릭 → New → Directory 만든 폴더 안에 함께 사용할 모듈 넣기 만든 폴더 안에 ' __init__.py ' 파이썬 파일 만들기
패키지 사용하기 실행할 스크립트 파일에서 import <패키지>.<모듈> as <이름> from <패키지>.<모듈> import <함수> from <패키지> import <모듈> import <패키지> !오류! !오류! 패키지 안에 있는 내용은 import 되지 않는다. 패키지 안에 있는 모듈을 사용하려면 __init__을 사용해야 함.
__init__ 파일 파이썬 3.3ver 이전 init 파일 필수 파이썬 3.3ver 이전 init 파일 필수 아님 BUT 이전 버전과의 호환성, 패키지의 명확성을 위해 권장 init = initialize (초기화) : 패키지를 열면 가장 먼저 실행됨.
__init__ 파일에서 모듈 import하기 import <패키지> 오류 안나게 하기 __init__ 파일에서 사용할 모듈/함수 import 해오기 호출에 따른 차이 (__init__ 파일에서) from <패키지> import <모듈> (main/스크립트 파일에서) <패키지>.<모듈>.<함수> (__init__ 파일에서) from <패키지>.<모듈> import <함수> (main/스크립트 파일에서) <패키지>.<함수>
__init__ 파일에서 변수 정의하기 각 모듈에서 필요로 하는 변수는 패키지에서 한 번만 정의 하는 것을 권장 __init__ 파일에서 변수 정의 모듈에서 사용할 때 from <패키지> import <변수> 스크립트에서 사용할 때 from <패키지> import <변수>
__all__ 특수 변수 from <패키지> import * print(dir()) # 결과에 패키지 안의 모듈이 출력 되지않음 __init__ 파일에서 __all__ 특수 변수 정의 # __init__ 파일에서 __all__ = [<모듈1>, <모듈2>] # 모든 모듈을 넣을 필요는 없음 # main/script 파일에서 from <패키지> import * print(dir()) # __all__에서 정의한 패키지 안의 모듈이 함께 출력 된다. __all__ 변수는 모듈에서도 사용가능 # 모듈 파일에서 __all__ = [<변수1>, <모듈2>] # main/script 파일에서 from <패키지> import * # __all__에서 정의된 변수1, 모듈2 사용가능
서브패키지
: 패키지 안의 패키지
서브패키지 만들기 서브패키지가 될 패키지 폴더 안에서 파이썬 패키지 를 만들고 서브패키지를 넣어준다. 파이썬 패키지는 디렉토리와 동일하나 __init__ 파일 자동 생성
서브패키지 사용하기 서브패키지 안의 모듈 가져오기 from <부모패키지>.<서브패키지> import <모듈> import <부모패키지>.<서브패키지>.<모듈> 서브패키지 전체 가져오기 서브패키지안의 __init__ 파일에 __all__이 정의되어 있어야한다. from <부모패키지> import <서브패키지> import <부모패키지>.<서브패키지>
상대 경로 임포트
상대 경로 임포트는 항상 . 아니면 .. 으로 시작한다 . 은 현재 패키지 안을 뜻하고 .. 은 상위 패키지 안을 뜻한다. 상대경로는 절대경로에 비해 덜 직관적 임. 상대 경로로는 각각의 모듈이 정확히 어디있는지, 패키지 구조가 어떻게 되는지 파악하지 어렵기 때문에
경로가 복잡해지는 경우는 절대 경로 를 쓰는 것이 좋다.
# 패키지 구조 <부모패키지>/ <패키지1> __init__.py <모듈1> <모듈2> <패키지2> __init__.py <모듈2_1>
1. <패키지1>의 init 파일에서 패키지 안에 있는 모듈들 가져오기
# __init__ 파일 위치 <부모패키지>/<패키지1>/__init__.py # 절대 경로 임포트 from <부모패키지>.<패키지1> import <함수1>, <함수2> # 상대 경로 임포트 from .import <함수1>, <함수2>
2. <패키지1>의 <모듈1>에서 <패키지2>의 <모듈2_1>의 <함수2_1>를 가져오고 싶을때
# <모듈1> 위치 <부모패키지>/<패키지1>/<모듈1> # 절대 경로 임포트 from <부모패키지>.<패키지2>.<모듈2_1> import <함수2_1> # 상대 경로 임포트 from ..<패키지2>.<모듈2_1> import <함수2_1>
외부패키지
: (=외부 라이브러리) 외부에서 미리 만들어논 패키지
알맞은 외부 패키지를 쓰면 프로그래밍 문제가 쉽게 해결됨
공식문서/ 구글 에 어떤 함수가 있는지, 함수들이 하는 일이 잘 정리되어 있음
스탠다드 라이브러리 vs 외부 패키지 스탠다드 라이브러리 : 설치 불필요 외부패키지 : 설치 필요
PIpy와 pip
PIpy.org 접속 설치할 패키지 검색 패키지 클릭 → documentation : 패키지의 사용법 정리 Getting Started : 입문자 가이드 (설치법, 핵심 개념, 튜토리얼) User Guide : 모든 토픽 설명 API reference : 함수, 객체 input parameter, return 값 설명 Getting Started → Preper pip
pip 설치하기 (일반적으로 자동설치 됨) PIpy에서 패키지를 다운로드 받아서 설치/삭제/업그레이드 해주는 패키지 관리 도구 (설치확인) cmd → pip3 Enter (설치법) python 삭제 후 재설치
pycharm으로 외부패키지 설치하기 File → Settings → Python Interpreter에서 + 클릭 → 설치할 패키지/버전 확인 후 검색 프로젝트마다 패키지를 따로 설치해야함.
커맨트라인으로 외부패키지 설치하기 cmd → pip install <설치할 패키지> Enter (삭제시) cmd → pip uninstall <설치할 패키지> Enter (버전 설치시) cmd → pip install <설치할 패키지> == <버전> Enter
파이썬의 가장 대표적인 패키지들
[데이터 분석, 시각화]
numpy : 다차원 배열을 다룸
pandas : 데이터를 테이블 형식으로 만들어줌
matplotlib : 데이터시각화 라이브러리
seaborn : matplotlib을 기반으로 한 시각화 라이브러리 (더 예쁜 그래프 그리기)
[러닝 머신]
sklearn : 대중적인 머신 리닝 라이브러리
tensorflow, pytorch, keras : 딥러닝 최적화 라이브러리
nltk : 덱스트 데이터 가공, 시각화
[웹 개발]
django : 파이썬에서 많이 쓰이는 웹 프레임워크
flask : django와 비슷, 더 간단한 기본적 기능 제공
[기타]
beautifulsoup4 : html, xml 문서를 파싱 (웹 스크래핑에 사용)
selenium : 브라우저 동작 자동화
requests : 파이썬의 간단한 http 라이브러
opencv : 컴퓨터 비전에 사용 (이미지 프로세싱, 얼굴 인식, 문자 인식 등) (설치) open-python, (임포트) import cv2
from http://tanlangye.tistory.com/10 by ccl(A) rewrite - 2021-09-25 22:00:27