programing

pyproject.toml 파일은 무엇을 위한 것입니까?

lovejava 2023. 6. 8. 19:06

pyproject.toml 파일은 무엇을 위한 것입니까?

배경

받은 하려다가 GitHub이 것을 .setup.py을 설치할 수 없었습니다.

pip install -e <folder>

대신에, 패키지는 파일을 가지고 있었는데, 그것은 매우 유사한 항목을 가지고 있는 것처럼 보입니다.setup.py보통은 가지고 있습니다.

내가 찾은 것

구글링은 나를 PEP-518로 이끌었고 그것은 약간의 비판을 줍니다.setup.py이론적 근거 섹션에 있습니다.그러나, 그것은 그것의 사용을 명확하게 말해주지 않습니다.setup.py. 또는 것은 피해야 합니다.pyproject.toml완전히 대체하고 싶습니다.setup.py.

문의사항

은 ▁이▁is?pyproject.toml대체하기 위해 사용되는 것setup.py아니면 둘 다 포함된 소포가 오면,pyproject.toml a 리고a.setup.py?
▁?▁▁a까▁▁would▁howpyproject.toml편집 가능한 상태에서?

네.pyproject.tomlPython 프로젝트의 빌드 시스템 요구 사항을 포함하는 PEP 518의 지정된 파일 형식입니다.

이것은 빌드 도구 의존성 문제를 해결합니다. 즉 계란 문제를 해결합니다.pip읽을 수 있는pyproject.toml의 및어떤전의버.setuptools또는wheel필요할지도 모릅니다.

이 요한경우가 하다면.setup.py 가능한 설치의 집편가 설한경심사있수다습에 할 수 .setup.py:

#!/usr/bin/env python

import setuptools

if __name__ == "__main__":
    setuptools.setup()

pyproject.toml는 를 대체하는 새로운 유니파이드 Python 프로젝트 설정 파일입니다.편집 가능한 설치에는 여전히 다음이 필요합니다.setup.py:import setuptools; setuptools.setup()

사용하기pyproject.toml, 친구들아.python -m pip install .

그렇다면, 프로젝트가 대신 사용하는 경우pip할 수 .%USERPROFILE%\AppData\Local\pypoetry\Cache\virtualenvs) 다음과 같이 합니다.

poetry install

그런 다음 pytest와 같은 종속성을 실행합니다.

poetry run pytest tests/

사전 커밋(사용).pre-commit-config.yaml):

poetry run pre-commit install
poetry run pre-commit run --all-files

무엇을 위한 것입니까?

를 끌고 , Python은 Python과 동일한 패키지 툴을 참조하십시오.setuptools더 이상 사실상의 표준이 아닌 것처럼 여전히 널리 퍼져 있는 것 같습니다.이러한 상황은 최종 사용자와 개발자 모두에게 여러 가지 문제를 야기합니다.

  1. 위해서setuptools/를 설치할 때 "/" "/" "/" "/" "" "가할 수 . 배포가 없는 경우setuptools설치됨;
  2. pip한를 지원하지 않기 는 소스다포기로으한반패설지치않도는구이때러한에문기지를 하십시오.setup.py호환되는 패키지를 생성하기 위한 파일입니다.명령을 사용해야 .
  3. 패키지 작성자가 패키징 도구를 변경하기로 결정한 경우 다른 도구별 명령을 사용하도록 워크플로우도 변경해야 합니다.

pyproject.toml는 다음과 같은 문제를 해결하기 위해 PEP 517 및 PEP 518에서 도입한 새로운 구성 파일입니다.

프로젝트에 사용할 빌드된 아티팩트를 생성하는 데 필요한 (일반적인) 단계를 생각합니다.

  1. 프로젝트의 원본 체크아웃입니다.
  2. 빌드 시스템 설치.
  3. 빌드 시스템을 실행합니다.

이 PEP [518]은 #2단계를 다룹니다. PEP 517은 #3단계를 다룹니다.

또한 모든 도구가 자체 섹션(표)을 사용하여 이 파일을 확장하여 도구별 옵션을 사용할 수 있지만, 이 옵션은 해당 옵션에 따라 다르며 필수는 아닙니다.

PEP 621은 다음을 사용할 것을 제안합니다.pyproject.toml정적인 도구에 구애받지 않는 방식으로 패키지 코어 메타데이터를 지정합니다.현재 이를 지원하는 백엔드는 다음 표에 나와 있습니다.

이 까니됩체를 대체합니까?setup.py?

위해서setuptools packages 반키지pyproject.toml엄격히 대체할 의도는 아닙니다.setup.py하지만 여전히 필요하다면 정확한 실행을 보장하기 위해서입니다.기타 포장 도구의 경우 예, 다음과 같습니다.

build-backend하며, 이 예: no 키 존 재 하 며 예 우 며 하 트 소 선 는 스 리 지 된 정 백 엔 드 의 이 따 가 형 니 릅 다 식 과 을 칙 규 키 : no ).setup.py백엔드에서 요구하지 않는필요합니다).프로젝트는 여전히 다음을 포함하기를 원할 수 있습니다.setup.py이 사양을 사용하지 않는 도구와 호환됩니다.

편집 가능한 모드로 패키지를 설치하는 방법은 무엇입니까?

가능한 설치는 "편집 가능한 설치"였습니다.setuptools-특정 기능이므로 PEP 517에서 지원되지 않습니다.나중에 PEP 660에서 이 개념을 패키지로 확장했습니다.pyproject.toml.

를 한 모드로 하려면 두 .pip:

  • 기능:
    프론트 엔드 모두(pip) 및660을 .)는 PEP 660을 지원합니다.
    pip에서는 버전 21부터 지원합니다.3;

  • 포장도다제야합니다해공음을을 해야 합니다.setup.pydevelop지휘권
    버전 21.1 이후 pip또한 다음을 사용하여 패키지를 설치할 수 있습니다.setup.cfg파일을 편집할 수 있습니다.

다음 표에서는 다양한 백엔드에서 편집 가능한 설치 지원에 대해 설명합니다.

이 부분에 대해서만 답변하고 나머지 부분은 다른 사람들이 잘 설명했습니다.

▁?▁▁a까▁▁would▁howpyproject.toml편집 가능한 상태에서?

해결책

2022년 2월에 시집 코어 v1.0.8이 출시된 이후로 다음과 같은 작업을 수행할 수 있습니다.

은 당신의 이항필다니에 이 합니다.pyproject.toml:

[build-system]
requires = ["poetry-core>=1.0.8"]
build-backend = "poetry.core.masonry.api"

실행:

pip install -e .

원천

pyproject.toml은 python 패키지의 파일과 PyPi에 표시될 모든 메타데이터를 선언할 수 있습니다.

flit와 같은 도구는 pyproject.toml 파일을 PyPi에 업로드하거나 pip로 설치할 수 있는 패키지로 처리할 수 있습니다.

다른 도구는 다른 목적으로 pyproject.toml을 사용합니다.예를 들어, pytest는 테스트를 실행하기 전에 python 경로(sys.path) 수정에 대한 pytest 지시사항과 테스트 위치 및 실행 방법에 대한 정보를 저장합니다.많은 IDE는 개발자들이 쉽게 테스트를 실행할 수 있도록 이것을 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/62983756/what-is-pyproject-toml-file-for