PEP 751: Python pylock.toml의 requirements.txt 대체

database
lock files
standard
PEP
reproducibility
hash
painless
build
sdist
version
backward compatibility
auditability
cross-platform
typing-extensions
anaconda
WheelNext
graph
json
nosql
workspace
rust
monorepo
scm
sbom
standalone
pip
distutils
setuptools
Python Steering Council
Python Core Developer
PyPA
PyPI
Brett Cannon
uranusjr
Paul Moore
Seth Michael Larson
Donald Stufft
Frost Ming
Charlie Marsh
Randy Döring
Author

Yunho Kee

Published

June 9, 2025

  1. 2019년 2월 (약 6년 전) requirements.txt의 Version 2 표준화에 대해 비공식적 논의
    • 기존에는 표준이 아니라 pip 명령 매개변수에 불과했음
      • 한 줄씩 매개변수 추가하는 셈
      • 그래서 여러 파일 입력 가능
      • 기존 소프트웨어들이 Reverse Engineering
    • 기존 소프트웨어들이 출력은 하지만 굳이 입력하지 않는 파일
      • pipsetuptools로부터 표준화해봤자 기존 소프트웨어 따라잡기 어려울 듯 (Bottom Up)
    • 통용하기 쉬운 표준 입력 파일 구상
      • 반대로 기존 소프트웨어들의 기능을 참고해서 표준화하는 전략 선택 (Top Down)
    • 고민 자체는 이전부터
    • Twitter에서 Tzu-ping Chung(uranusjr)과 논의
  2. 2020년 6월 PEP 621: setup.pypyproject.toml
    • Project Metadata
      • 기존에는 distutilssetup.pysetuptools도 따라 썼었음
    • Format 자체의 Version은 논외
      • 사람이 작성하므로
  3. 2021년 7월 PEP 665: .whl (Wheel) 파일 설치를 위한 Lock이지만 반려
    • Reproducibility는 기본
    • 보안을 위한 Hash cf. pip-tools의 pip-compile
    • Painless
      • .whl (Wheel) 파일은 Binaries라 설치는 Copy & Paste 수준
      • sdist (Source Distributions) 지원을 위한 수요 때문에 반려
        • 어차피 대부분 .whl (Wheel) 파일 Build하니까 미리 Build하면 되는데 Painful하다는 반대에 부딪힘
  4. 2024년 7월 PEP 751: sdist (Source Distributions) 지원 Lock
    • sdist (Source Distributions) 일부 지원
      • 엄격한 지원은 기존 반대와 달리 복잡해졌다는 새로운 반대 때문에 필요없어짐
      • 논의 자체는 이전부터 Draft PEP 등에서
    • 최초로 무조건적 승인된 PEP
      • Format 자체의 Version이 있기 때문
        • 사람이 작성하지 않고 자동 생성
        • Backward Compatibility 논외
    • PDM의 영향 반영
      • Auditable cf. pip audit
        • 자동 생성하더라도 보안을 위한 육안 점검 용이 cf. Python Package Index (PyPI)에 Upload한 시각
        • JSON보다 List 또는 Table 구조 cf. Not Only SQL (NoSQL) 중 Document Stores의 Join, Relational Database Management Systems (RDBMSs)의 JSON
          • 게다가 Parallelizable
        • 최초 Version부터
      • Multi-Use
      • Frost Ming와 논의
    • UV의 영향 반려
      • Graph 구조로 재구성했다가 복잡하다는 반대 때문에 Roll Back
      • Workspace는 특수한 개념이라 표준화 보류 또는 다음을 기약
        • Monorepo 개념 cf. Python Polylith의 Workspace 중 Development
        • Rust의 영향
      • Charlie Marsh와 논의
    • Poetry의 영향 반영
      • String default-group → List default-groups
      • Randy Döring와 논의
    • 추후 출력뿐 아니라 입력 가능성
    • Project Version은 Lock에서 제외
      • setuptools나 Software Configuration Management (SCM) 등에서 동적 생성 시 혼동되므로
    • 2025년 3월까지 약 8개월 간 1,500 건 논의
  5. 2025년 1월 PEP 770: Software Bill-of-Materials (SBOMs)
    • Lock Files와 달리 보안을 위해 점검 가능한 2가지 취약점
      1. Build할 때 Backend가 사용한 컴파일러 Version 등
      2. Vendor 또는 Embed한 Version
        • pip가 Standalone한 이유
    • Seth Michael Larson이 작성
    • Brett Cannon이 Delegate
Back to top

Citation

BibTeX citation:
@online{kee2025,
  author = {Kee, Yunho},
  title = {PEP 751: Python pylock.toml의 requirements.txt 대체},
  date = {2025-06-09},
  url = {https://yhkee0404.github.io/posts/database/pylock-toml/},
  langid = {ko}
}
For attribution, please cite this work as:
Kee, Yunho. 2025. “PEP 751: Python pylock.toml의 requirements.txt 대체.” June 9, 2025. https://yhkee0404.github.io/posts/database/pylock-toml/.