[BoostCamp AI Tech / Day 2] Module and Project

newbie·2021년 8월 3일
0

Index

  • 모듈과 패키지
  • Module
    • Built-in Modules
  • 패키지
  • 가상환경
    • anaconda 가상환경 구성하기

모듈과 패키지

  • 모듈
    • 작은 프로그램 조각들(OOP)을 모아서 하나의 큰 프로그램(모듈)을 개발
    • 프로그램을 모듈화 시키면 다른 프로그램 혹은 사용자가 사용하기 쉬움
    • ex) 게임 접속 모듈
  • 패키지
    • 모듈을 모아놓은 단위, 하나의 프로그램

Module

  • 파이썬의 모듈 == py 파일
  • 같은 폴더에 Module에 해당하는 py파일과 해당 모듈을 사용하는 py파일을 저장 후
  • import 문을 통해 module 호출
    • addition.py Module을 import하여 계산해보기
    #addition.py
    def addition_numbers(x,y):
        return x + y
        
    #tmp.py
    import addition
    num1 = input("첫 번째 값을 입력해주세요: ")
    num2 = input("두 번째 값을 입력해주세요: ")
    res = addition.addition_numbers(num1,num2)
  • 모듈을 호출할 떄 범위를 지정할 수 있음 => namespace
    • 모듈 안에는 함수와 클래스 등이 존재 가능

    • 필요한 내용만 골라서 호출

    • from과 import 키워드를 사용

    • ex)

      # 모듈명을 별칭(alias)로 써서 호출
      import addition as ad
      ad.addition_numbers(num1,num2)
      
      # 모듈에서 특정 함수 혹은 클래스만 호출
      from addition import addition_numbers
      addition_numbers(num1,num2)
      
      #모듈에서 모든 함수 또는 클래스 호출
      from addition import *
      addition_numbers(num1,num2)
  • import 시 "__pycache__/addition.cptyhon-38.pyc" 폴더가 생성됨
    • .pyc : 컴파일된 파일
      • python 인터프리터가 해석, 컴파일
      • backend에서 돌아가는 프로그램이 파이썬을 쉽게 호출하기 위해 기계어로 변역하여 pycache에 저장
      • 내 폴더를 빠르게 메모리에 로딩하기 위해 컴파일 된것을 저장
      • 캐시가 생성 시 자동완성 기능 사용 가능

Built-in Modules

  • 파이썬이 기본 제공하는 라이브러리
  • 문자처리, 웹, 수학 등 다양한 모듈이 제공
  • 다른 조건없이 import 문으로 활용 가능
  • 필요의 경우 구글 검색을 통해 해당 문서 확인

패키지

  • 하나의 대형 프로젝트를 만드는 코드의 묶음

  • 다양한 모듈들의 합, 폴더로 연결됨

  • __init__ , __main__ 등 키워드 파일명이 사용됨

  • 다양한 오픈소스들이 모두 패키지로 관리됨

  • package 만들어보기
    1) 기능들을 세부적으로 나눠 폴더로 만듦
    2) 각 폴더별로 필요한 모듈(.py)을 구현(구현 후 python shell에서 테스트 해보기)
    3) 폴더별로 __init__.py 구성하기

    • 현재 폴더가 패키지임을 알리는 초기 스크립트
    • 없을 경우 패키지로 간주하지 않음(단, python 3.3 이후부턴 불필요)
    • 하위 폴더와 py파일(모듈)을 모두 포함
    • import와 __all__ keyword 사용
      4) __main__.py 파일 만들기
    • 보통 파이썬 패키지가 프로젝트로 공개되면, 폴더 자체를 실행 가능해야 함
    • 폴더 실행을 위해선 main 필요
    • 다른 폴더에 있는 여러 모듈들을 묶어서 한번에 처리 => 패키지
    • 이것을 공유하면 프로젝트
  • package namespace

    • package 내에서 다른 폴더의 모듈을 부를 떄 상대참조로 호출
    #현재 디렉토리 기준(" . ")
    from .sub_file1 import module1.py
    
    #부모 디렉토리 기준(" .. ")
    from ..file2.sub_file2  import module2.py

가상환경(Virual Environment)

  • 각 프로젝트에 맞춰서 환경을 새로 구성해야 함
  • 프로젝트 진행 시 필요한 캐지미나 설치하는 황경
  • 기본 인터프리터 + 프로젝트 종류별 패키지 설치
    • 각각 패키지 관리할 수 있는 기능
  • 다양한 캐키지 관리 도구를 사용
  • 대료적인 도구 파이썬 가산환경 도구 : virtualenv vs conda
    • virtualenv + pip conda
      • 가장 대표적인 가상환경 관리 도구
      • 레퍼런스+패키지 개수
      • pip로 설치, 유용
      • compile된 코드가 들어가있지 않은 경우 있음
        • 이 경우 compile된 것을 다운받아서 사용해야 함
    • conda
      • 상용 가상환경도구
      • miniconda 기본 도구
      • 설-치의 용이성
      • Windows에서 장점
      • 자동 컴파일 도구 존재(C기반의 python에 유리)

anaconda 가상환경 구성하기

  • conda 명령어
    • 가상환경 생성

      conda create -n 가상환경이름 (python=파이썬버전, 미기입시 base 환경의 python version 설치)

    • 가상환경 호출

      conda activate 가상환경이름

    • 가상환경 해제

      conda deactivate

    • 가상환경 삭제

      conda remove --name 가상환경이름 --all
      conda remove -n 가상환경이름 --all

    • 패키지 설치

      conda install 패키지명

profile
DL, NLP Engineer to be....

0개의 댓글