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.toml
Python 프로젝트의 빌드 시스템 요구 사항을 포함하는 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
더 이상 사실상의 표준이 아닌 것처럼 여전히 널리 퍼져 있는 것 같습니다.이러한 상황은 최종 사용자와 개발자 모두에게 여러 가지 문제를 야기합니다.
- 위해서
setuptools
/를 설치할 때 "/" "/" "/" "/" "" "가할 수 . 배포가 없는 경우setuptools
설치됨; pip
한를 지원하지 않기 는 소스다포기로으한반패설지치않도는구이때러한에문기지를 하십시오.setup.py
호환되는 패키지를 생성하기 위한 파일입니다.명령을 사용해야 .- 패키지 작성자가 패키징 도구를 변경하기로 결정한 경우 다른 도구별 명령을 사용하도록 워크플로우도 변경해야 합니다.
pyproject.toml
는 다음과 같은 문제를 해결하기 위해 PEP 517 및 PEP 518에서 도입한 새로운 구성 파일입니다.
프로젝트에 사용할 빌드된 아티팩트를 생성하는 데 필요한 (일반적인) 단계를 생각합니다.
- 프로젝트의 원본 체크아웃입니다.
- 빌드 시스템 설치.
- 빌드 시스템을 실행합니다.
또한 모든 도구가 자체 섹션(표)을 사용하여 이 파일을 확장하여 도구별 옵션을 사용할 수 있지만, 이 옵션은 해당 옵션에 따라 다르며 필수는 아닙니다.
PEP 621은 다음을 사용할 것을 제안합니다.pyproject.toml
정적인 도구에 구애받지 않는 방식으로 패키지 코어 메타데이터를 지정합니다.현재 이를 지원하는 백엔드는 다음 표에 나와 있습니다.
enscons |
flit_core |
hatchling |
pdm-pep517 |
poetry-core |
setuptools |
---|---|---|---|---|---|
![]() 0.26.0+ |
![]() 3.2+ |
![]() 0.3+ |
![]() 0.3.0+ |
![]() 이슈 #3332 |
![]() 61.0.0+ |
이 까니됩체를 대체합니까?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.py
을develop
지휘권
버전 21.1 이후pip
또한 다음을 사용하여 패키지를 설치할 수 있습니다.setup.cfg
파일을 편집할 수 있습니다.
다음 표에서는 다양한 백엔드에서 편집 가능한 설치 지원에 대해 설명합니다.
enscons |
flit_core |
hatchling |
pdm-pep517 |
poetry-core |
setuptools |
---|---|---|---|---|---|
![]() 0.28.0+ |
![]() 3.4+ |
![]() 0.3+ |
![]() 0.8.0+ |
![]() 1.0.8+ |
![]() 64.0.0+ |
이 부분에 대해서만 답변하고 나머지 부분은 다른 사람들이 잘 설명했습니다.
▁?▁▁a까▁▁would▁how
pyproject.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
'programing' 카테고리의 다른 글
Excel VBA에서 주어진 모듈 이름의 Function 및 Sub 목록을 가져오는 방법 (0) | 2023.06.08 |
---|---|
Firebase에서 배열 유형 문서 항목에 타임스탬프를 할당하는 방법 (0) | 2023.06.08 |
입력을 테스트하고 있습니다.효소의 초점() (0) | 2023.06.08 |
안드로이드:onClick XML 속성은 setOnClickListener와 정확히 어떻게 다릅니까? (0) | 2023.06.08 |
행렬도:lib getylim 값 (0) | 2023.06.08 |