다음과 같은 패키지 구조
.
├── my_package
│ └── __init__.py
├── setup.cfg
└── setup.py
내용 setup.py
from setuptools import setup
setup()
내용 setup.cfg
[metadata]
name = my_package
version = 0.1
[options]
packages = find:
나는 바퀴 나에 대한 소스 배포판 구축 할 수 my_package
와 같은이
pip wheel --no-deps -w dist .
# generates file ./dist/my_package-0.1-py3-none-any.whl
python setup.py sdist
# generates file ./dist/my_package-0.1.tar.gz
그러나 setuptools의 관리자에 따르면 선언적 빌드 구성이 이상적이며 명령형 빌드를 사용하면 코드 냄새가납니다. 따라서 다음 setup.py
과 pyproject.toml
같이 바꿉니다 .
.
├── my_package
│ └── __init__.py
├── setup.cfg
└── pyproject.toml
내용 pyproject.toml
[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools", "wheel"]
그리고 당신은 여전히 전과 같은 방식으로 바퀴를 만들 수 있습니다. 그러나 sdist가 작동하지 않습니다.
python: can't open file 'setup.py': [Errno 2] No such file or directory
그렇다면 실제로 setuptools를 사용하여 .tar.gz 파일 을 어떻게 만들어야 합니까? Sdist를 생성하는 사용자를위한 도구는 무엇입니까? 빌드 백엔드를 변경하고 싶지 않습니다. 다른 패키징 도구는 모두 자체 빌드 진입 점을 작성하는 것처럼 보이지만 메타 데이터에서 선언적 빌드 시스템을 정의하는 요점은 빌드 시스템을 직접 익힐 필요가 없으므로 각 방법을 배우는 것입니다. 다른 패키징 도구가 호출되거나 인터프리터로 이동하여 Python API를 수동으로 호출해야합니다. 그러나 빌드 시스템 요구 사항에 대한 PEP는 2 년이 넘었습니다. 여기에 명백한 것이 빠져 있습니까?
setup.py
파일 을 사용하지 않고 소스 배포판을 작성하는 방법은 무엇입니까?
pep517.build
플리트,시, 해치 등의 생산 도구가있을 때 실험, 임시 목발에만 초점을 둔 이유는 무엇 입니까?