설정 도구 대 분산 도구: 분산 도구가 여전히 존재하는 이유는 무엇입니까?
은 프로젝트를하는 데 할 수 스럽습니다. 에는 Python 프 로 젝 트 패 도 있 역 혼 럽 습 스 란 니 다 가 사 의 구 는 수 사 데 은 할 용 설를키명는하고지하화▁python▁python▁that이 포함됩니다.distutils
도서관에서, 표준라러리서에이브,서,distribute
,distutils2
,그리고.setuptools
(및 그 이상).는 것 같습니다.distribute
그리고.distutils2
을 위해 중단되었습니다.setuptools
두 가지 경쟁 기준을 남깁니다.
내가 알기로는setuptools
보다훨예옵션을(의존 관계 , 테스트 등)보다 옵션 종속성 선언, 합니다.distutils
그러나 Python 표준 라이브러리에는 포함되어 있지 않습니다(아직?).
Python 패키징 사용자 가이드[1]에서는 다음을 권장합니다.
사용하다
setuptools
프로젝트를 정의하고 원본 배포를 만듭니다.
설명:
퓨어를 사용할 수 있지만,
distutils
패키지 으로 채우는 몇 편의성 되어 있습니다.setuptools
Python에서도 ( 표준라밖있로므으에와리, 셋도다기제보며달리하공능세업를트된일다관양도는이전구와는 달리)distutils
),setuptools
지원되는 모든 버전에서 다가오는 "Metadata 2.0" 표준 형식을 생성하도록 업데이트됩니다.사하기로선프경우도에의트로젝택한을 사용하기로 의 경우에도 입니다.
distutils
이 (하는 것이 소스에서 이러한 때, pip이 (pip사, 전구휠설것아이는니치하라서파를프소에설트로젝직이스일치때할구다당)을 사용하여 합니다.setuptools
대신.
하지만 다양한 프로젝트의 setup.py 파일을 조사해 보면 이것이 실제 표준이 아닌 것으로 보입니다.많은 패키지가 여전히 사용됨distutils
그리고 지지하는 사람들.setuptools
주자섞을 섞습니다.setuptools
와 함께distutils
가져오기를 하여 다음을 합니다.
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
이어서 두 사람이 모두 설치할 수 있는 설정을 작성하는 방법을 시도합니다.setuptools
그리고.distutils
가 발생하기 쉬운 됩니다.distutils
에서는 설정 기능의 종속성을 지원하지 않습니다.
왜 사람들은 여전히 지원을 위해 추가적인 노력을 기울이고 있습니까?distutils
입니다.setuptools
표준 라이브러리에 없는 것이 유일한 이유입니까?의 장점은 입니까?distutils
그리고 오직 지원하는 setup.py 파일을 작성하는 것에 대한 단점이 있습니까?setuptools
.
이 SO 질문을 확인합니다.모든 포장 방법을 매우 잘 설명하고 있으며, 질문에 어느 정도 답변하는 데 도움이 될 수 있습니다.배포, 배포, 설정 도구 및 배포2의 차이점은 무엇입니까?
Distutils는 여전히 Python에서 패키징을 위한 표준 도구입니다.표준 라이브러리(Python 2 및 Python 3.0 ~ 3.3)에 포함되어 있습니다.단순한 Python 배포에 유용하지만 기능이 없습니다.setup.py 스크립트에서 가져올 수 있는 Python 패키지를 소개합니다.
Setuptools는 Distutils의 한계를 극복하기 위해 개발되었으며 표준 라이브러리에 포함되어 있지 않습니다.easy_install이라는 명령줄 유틸리티를 도입했습니다.또한 setup.py 스크립트에서 가져올 수 있는 setuptools Python 패키지와 배포와 함께 설치된 데이터 파일을 찾기 위해 코드에서 가져올 수 있는 pkg_python 패키지를 소개했습니다.그것의 단점 중 하나는 분산형 Python 패키지를 원숭이 패치한다는 것입니다.그것은 pip과 잘 작동할 것입니다.가장 최신 버전은 2013년 7월에 출시되었습니다.
따라서 설정 도구는 Distutils보다 선호되어야 하며 질문의 출처는 알 수 있지만, distutils가 쉽게 말해 일부 인기 있는 레거시 프로그램에서 많은 경우에 사용되므로 지원을 곧 잃을 것 같지는 않습니다.그리고 여러분도 아시다시피 레거시 프로그램에서 이러한 종류의 것들을 변경하는 것은 상당히 번거롭고 비호환성과 같은 많은 문제를 동반할 수 있습니다. 그러면 개발자는 소스 코드를 다시 작성해야 합니다.따라서 distutils는 표준 python 라이브러리의 일부이지만 setuptools는 그렇지 않다는 사실도 있습니다.따라서, 만약 당신이 파이썬 프로그램을 만들고 있다면, 이 시대에 셋업툴을 사용하세요. 하지만, 디퓨틸이 없었다면 셋업툴은 존재하지 않았을 것입니다.
셋업 도구가 표준 라이브러리에 없다는 사실이 유일한 이유입니다.
그것이 한 가지 이유입니다.다음은 NumPy에서 직접 가져온 것입니다.
if len(sys.argv) >= 2 and ('--help' in sys.argv[1:] or
sys.argv[1] in ('--help-commands', 'egg_info', '--version',
'clean')):
# Use setuptools for these commands (they don't work well or at all
# with distutils). For normal builds use distutils.
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
는 NumPy를 선호합니다.setuptools
찾을 수만 있다면요하지만 SciPy는 이것을 선호하기 위해 패치되기 전까지 이것을 하곤 했습니다.distutils
:커밋 로그 인용:
설정 도구는 테스트 스크립트에서 모드 +x를 설정하여 Nose가 실행을 거부하도록 합니다.그러지 않는 게 좋겠어요.
물론, 사이의 합병은setuptools
그리고.distribute
이 모든 문제를 제때에 해결해야 하지만 많은 패키지가 여전히 Python 2.6 설치를 지원해야 합니다.
설정 도구가 더 나은 도구 집합임에 틀림없지만, 우리가 여전히 distutils에 대해 이야기하고 사용하는 몇 가지 이유가 있습니다.
첫째, 어디에서나 유통이 가능합니다.다른 사용자와 공유하기 위한 모듈을 구축하려는 경우 복잡한 요구사항이 없으면 작업 기계에서 모듈을 사용할 수 있습니다.이는 이전 버전의 파이썬을 지원해야 하는 경우나 익숙하지 않은 환경에서 작업하는 경우에 특히 중요합니다.
두 번째로, 설정 도구는 배포 기능에 대한 향상된 기능을 제공합니다.따라서 이 도구는 배포 도구 세트를 본떠서 모델링되고 모든 구조를 여기서 가져옵니다.설정 도구에 대한 설명서는 독자가 기본 도구 세트를 어떻게 향상시키는지에 대해 잘 알고 있다고 가정합니다.당신은 distutils가 방언을 정의하고 셋업툴이 그 방언을 향상시킨다고 생각할 수 있습니다.
새로운 프로젝트에 대한 저의 개인적인 접근 방식은 제가 공염불을 사용할 것이라는 가정에서 시작하는 것입니다.프로젝트가 확장되어 설치 도구의 기능이 필요한 경우에만 업그레이드를 수행합니다.셋업 도구는 디유틸을 대체하는 도구이며, 제 setup.py 에 대한 한 줄 변경입니다.
기본적으로 책임 분담 때문입니다.
setuptools
Python 코어 팀이 아닌 타사에서 관리하기 때문에 Python 표준 라이브러리의 일부가 아닙니다.것들 에서, 은말것다, 중도서에들그른,도다중서▁which에,른것들,,
- 핵심 테스트 제품군에서 다루지 않으며 핵심 기능에 의존하지 않습니다.
- 애드온 모듈(위치, 가져오기 수단, C 확장의 이진 인터페이스 등)에 대한 핵심 표준 자체를 설정하지 않습니다.
- Python 릴리스와는 독립적으로 업데이트 및 릴리스됩니다.
사실상 핵심 팀은 배포 범위를 좁히고 "핵심 표준" 및 "최소한 필요한 컴파일" 부분은 자체적으로 유지하면서 그 이상의 모든 것(확장 컴파일러/패키지 형식/지원 여부에 관계없이)은 타사에 맡겼습니다. 이전에 이러한 "확장 부품"을 다루던 코드는 이전 버전과의 호환성을 위해 오래된 상태로 남아 있었습니다.
Python 모듈 배포에서 — Python 2.7.12 설명서:
직접 사용하는 동안
distutils
현재 패키지 및 배포 인프라의 기반을 마련했으며 표준 라이브러리의 일부로 남아 있을 뿐만 아니라 다른 방식(예: Python 패키징 표준 개발을 조정하는 데 사용되는 메일링 목록의 이름)으로도 사용됩니다.
다른 로 다OS 패도마용을 .setuptools
그리고.pip
-
- 시스템에 이미 다른 패키지 관리자가 있는 경우에는 이러한 패키지가 필요하지 않거나 유지관리에 유해하기 때문입니다.
언급URL : https://stackoverflow.com/questions/25337706/setuptools-vs-distutils-why-is-distutils-still-a-thing
'programing' 카테고리의 다른 글
Spring-Boot 실행 데이터.하나의 프로파일에서만 sql (0) | 2023.07.02 |
---|---|
Vue에서 계산된 개체를 변경하는 방법은 무엇입니까? (0) | 2023.07.02 |
sqlalchemy가 NULL이 아닙니다. 선택 (0) | 2023.07.02 |
오류 유형 3 오류:활동 클래스 {}이(가) 없습니다. (0) | 2023.07.02 |
CTE 오류: "앵커와 재귀 부품 사이에 유형이 일치하지 않습니다." (0) | 2023.07.02 |