Sergemeow 2023. 2. 18. 17:02

모듈: 다양한 기능을 하나의 파일(.py)로 묶어둔 것

패키지: 다양한 파일을 하나의 폴더로 묶어둔 것. 패지지안에 또다른 서브 패키지 포함 가능

라이브러리: 다양한 패키지를 하나로 묶어둔 것

import module
from module import var, function, Class
from module import * # 전체.

from package import module
from package.module import var, function, Class

파이썬 패키지 관리자(pip)

  • PyPI(python package index)에 저장된 외부 패키지들을 설치하도록 도와주는 패지키 관리 시스템
  • 패키지 설치
    • 최신버전/ 특정버전/ 최소버전을 명시하여 설치 가능
    • 이미 설치되어 있는 경우 이미 설치되어있음을 알리고 진행되지 않음

$ pip install SomePackage

$ pip install SomePackage==1.05

$ pip show SomePackage

$ pip uninstall SomePackage

  • 패키지 관리하기
    • 아래의 명령어들을 통해 패키지 목록을 관리하고 설치할 수 있음
    • 일반적으로 패키지를 기록하는 파일의 이름은 requirements.txt로 정의함
    $ pip freeze > requirements.txt #현상태로 유지
  • $ pip install -r requirements.txt #같은 상태로 업데이트

가상환경세팅하기

  • 가상환경세팅은 차후 버전이 다른 패키지들을 가진 환경에서 구성 중인 프로그램을 문제 없이 이어가기 위해 필요.
  • 순서
    • Python 가상환경 생성 python -m venv (가상환경이름)
    • 제대로 생성되었다면 명령어를 실행한 위치에 가상환경이름의 디렉토리가 생성됨
    • 가상환경실행source venv/Scripts/activate
    • 정상적으로 가상환경이 실행되었다면 가상환경 이름이 CLI에 출력됨
    • 가상환경을 실행시켜주는 스크립트를 실행, 스크립트는 생성된 디렉토리 하위의 Scripts 디렉토리의 activate 실행

    • 가상환경 설정 저장하기pip freeze > requirements.txt
    • 명령어를 입력하면 디렉토리에 세팅정보가 기재된 파일이 생성됨
    • 가상환경에 설치한 라이브러리, 패키지를 저장하여 손쉽게 가상환경 설정 가능

    • 가상환경 설정 불러오기pip install -r requirements.txt
    • 세팅정보 파일을 디렉토리에 저장한 후에 아래 명령어 실행
  • 가상환경은 터미널 단위로 실행됨. 터미널을 종료하였다면 다시 activate 해줘야함
  • 디렉토리에서 ‘VS Code에서 실행’하면 해당 가상환경으로 VS Code가 실행됨

패키지 활용하기

  • 패키지는 여러 모듈/하위 패키지로 구조화
    • 활용 예시 : package.module
  • 모든 폴더에는 *init*.py 를 만들어 패키지로 인식
    • Python 3.3부터는 파일이 없어도 되지만,
    • 하위 버전 호환 및 프레임워크 등에서의 동작을 위해 파일을 생성하는 것을 권장

패키지 만들기

  • 계산 기능이 들어간 calculator 패키지를 아래와 같이 구성
    • check.py에서 calculator의 tools.py의 기능을 사용
    • 폴더 구조:init.pycalculator/tools.py
    • init.py
    • check.py
    • my_package/
#tools.py

def add(num1, num2):
    return num1 + num2

def minus(num1, num2):
    return num1 - num2
#check.py

from calculator import tools

print(dir(tools)) #tools에 어떤 변수와 메소드(method)를 가지고 있는지 나열
'''
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', 
'__package__', '__spec__', 'add', 'minus']
'''
print(tools.add(3, 5))
print(tools.minus(3, 5))