[python] 의존성 관리자와 poetry

건너별·2022년 5월 24일
0

python

목록 보기
8/12

의존성

  • dependency : 코드에서 두 모듈 간 연결을 의미. 객체지향언어에서는 두 클래스 간의 관계라고도 말함.
    • Dependency injection : 기본적으로 의존성이 위험하기 때문에, 외부로부터 의존성을 을 가져옴
      • 객체 생성은 다른 곳에서 하고, 생성된 객체를 참조하면 됨
      • 그 결과로 클래스를 재사용할 가능성을 높이고, 다른 클래스와 독립적으로 클래스 테스트 가능
      • Contructor Injection - Field Injection - Method Injection
    • python 에서는 의존성 관리자로 pip, pipenv

poetry : 파이썬의 의존성(패키지) 관리자

  • pip의 문제점
    • dependency resolving : 라이브러리 버전 관리가 힘듦
    • dependency locking : 락 불가능
    • virtualenv 로 분리 가능하지만, 불편함
  • poetry의 특징
    • pip 와 virtualenv 를 모두 사용할 수 있게 하는 의존성 관리자
    • Dependency locking : poetry.lock이라는 락파일 생성
  • 순서 [블로그 참고]
    • Poetry installation
    • Project Initialization
    • Package Installation
  • 아래와 같은 파일들을 자동 생성 ( pip와 같이 따로 requirements.txt 파일 작성할 필요 없음)
    • pyprojects.toml : 프로젝트 메타데이터
      # 예시
      이름 = "프로젝트명"
      [기본]
      profile_name = "프로필"
      player_name = "플레이어"
      profile_created = 1979-05-27T07:32:00-08:00
      소리 = 사실
      [사용자]
      [유저 프로필]
      이름 = "프로필1"
      player_name = "플레이어1"
      클래스 = "전사"
      [사용자 설정]
      소리 = 거짓
      [default_inventory]
      전사 = [ ["검", "방패"], ["판금 갑옷", "판금 투구"] ]
      마법사 = [["지팡이", "지팡이"], ["로브", "후드"]]
      항목 = [
      "건강의 묘약",
      "해독제",
      "마나 물약"
      ]
    • poetry.lock : 설치된 패키지들의 버전과 hash 가 저장되어 있음
      [[package]]
      name = "matplotlib"
      version = "3.3.4"
      description = "Python plotting package"
      category = "main"
      optional = false
      python-versions = ">=3.6"
      
      [package.dependencies]
      cycler = ">=0.10"
      kiwisolver = ">=1.0.1"
      numpy = ">=1.15"
      pillow = ">=6.2.0"
      pyparsing = ">=2.0.3,<2.0.4 || >2.0.4,<2.1.2 || >2.1.2,<2.1.6 || >2.1.6"
      python-dateutil = ">=2.1"
      
      [[package]]
      name = "mesh-tensorflow"
      version = "0.1.18"
      description = "Mesh TensorFlow"
      category = "main"
      optional = false
      python-versions = "*"
      
      [package.dependencies]
      absl-py = "*"
      future = "*"
      gin-config = "*"
      six = "*"
      
      [package.extras]
      auto_mtf = ["ortools"]
      tensorflow = ["tensorflow (>=1.15.0)"]
      transformer = ["tensorflow-datasets", "scipy"]
profile
romantic ai developer

0개의 댓글