programing

분배, 디스트리뷰트, 세트툴 및 디스트리뷰트2의 차이점

sourcejob 2022. 11. 23. 20:13
반응형

분배, 디스트리뷰트, 세트툴 및 디스트리뷰트2의 차이점

상황

Python 3에 오픈 소스 라이브러리를 이식하려고 합니다.(SymPy, 궁금하신 분 있으면)

뛰어야 요.2to3Python 3 으 python python 용 python python python python python python python python python 。 위해서는, 「러려」를 .distribute할가 있습니다 이 은 (Doctest에 따르면) porting이 필요합니다.distutils


문제

잘 .distutils,distribute,setuptools매뉴얼은 개략적으로 설명하고 있습니다.이러한 매뉴얼은 서로 다른 포크로 보여 대부분의 경우(전부는 아니지만) 호환성을 의도하고 있기 때문입니다.


질문

누가 차이점을 설명해 주시겠어요?뭘 써야 하죠?가장 현대적인 해결책은 무엇입니까?(여담이지만, 다음 주소로 이동에 관한 가이드도 주시면 감사하겠습니다.Distribute하지만 그건 질문의 범위를 조금 벗어난 것입니다.)

2022년 5월 현재, 이 질문에 대한 다른 대부분의 답변은 몇 년 전 것이다.Python 패키징 문제에 대한 조언을 받을 때, 발행일을 확인하고 오래된 정보를 신뢰하지 마십시오.

Python 패키징 사용자 가이드는 읽을 가치가 있습니다.모든 페이지에는 "마지막 업데이트" 날짜가 표시되므로 매뉴얼의 빈도를 확인할 수 있고 매우 포괄적입니다.Python Software Foundation의 python.org의 하위 도메인에서 호스팅된다는 사실만으로도 신뢰성이 높아집니다.프로젝트 요약 페이지는 특히 여기서 관련이 있습니다.

도구의 개요:

다음은 Python 패키징 환경의 요약입니다.

지원되는 도구:

  • setuptools 는 Distutils의 한계를 극복하기 위해 개발되었으며 표준 라이브러리에는 포함되지 않습니다.이것은 명령어라인 유틸리티를 도입했습니다.easy_install, 「 」, 「 」도 setuptools 수 .setup.py및 「」의pkg_resources배포판이 설치된 데이터 파일을 찾기 위해 코드로 가져올 수 있는 Python 패키지입니다. 중 가 갓차스를 이다.distutilsPython과 잘 .pip. 일반 릴리즈가 표시됩니다.

  • scikit-build 는 내부적으로 CMake를 사용하여 컴파일된 Python 확장을 구축하는 향상된 빌드 시스템 생성기입니다.Scikit-build는 디스트리뷰트를 기반으로 하지 않기 때문에 제한이 없습니다.ninja-build가 존재하는 경우 skikit-build는 다른 프로젝트보다 3배 이상 빠른 속도로 대규모 프로젝트를 컴파일할 수 있습니다.와 잘 될 겁니다.pip.

  • distlib 다음과 같은 고급 도구에서 사용되는 기능을 제공하는 라이브러리입니다.pip.

  • packaging 또한 다음과 같은 고급 도구에서 사용되는 기능을 제공하는 라이브러리입니다.pip ★★★★★★★★★★★★★★★★★」setuptools

폐지/폐기된 도구:

  • distutils 는 여전히 Python의 표준 라이브러리에 포함되어 있지만 Python 3.10부터는 사용되지 않는 것으로 간주됩니다.간단한 Python 배포에는 유용하지만 기능이 없습니다.이 명령어는distutils 수 .setup.py★★★★★★ 。

  • distribute 의 포크였다setuptools. 네임스페이스를 되어 있는 Distribute가 사용됩니다import setuptools는 Distribute에서 배포된 패키지를 실제로 Import합니다.배포가 Setuptools 0.7다시 병합되었으므로 배포를 더 이상 사용할 필요가 없습니다.사실 Pypi 버전은 Setuptools를 설치하는 호환성 계층일 뿐입니다.

  • distutils2 가장 좋은 결과를 얻기 위한 시도였다.distutils,setuptools ★★★★★★★★★★★★★★★★★」distributePython의 표준 라이브러리에 포함되어 있는 표준 툴이 됩니다.라는 생각이었다.distutils2 버전에 됩니다.또, 그 Python 버전도 배포됩니다.distutils2로 이름이 바뀔 것이다.packagingPython 3.3의 경우 표준 라이브러리에 포함되어 있습니다.그러나 이 계획들은 의도한 대로 진행되지 않았고 현재는 포기된 프로젝트이다.가장 최근 발매는 2012년 3월이었고, Pypi 홈페이지가 마침내 그것의 죽음을 반영하도록 업데이트되었다.

기타:

관심이 있는 경우 Python Packaging User Guide의 Project Summaries를 참조하십시오.그 페이지를 반복하지 않기 위해, 그리고 질문에 맞는 답을 유지하기 위해, 나는 그것들을 모두 나열하지 않을 것이다.distribute,distutils,setuptools ★★★★★★★★★★★★★★★★★」distutils2.

권장 사항:

만약 이 모든 것이 처음이고 어디서부터 시작해야 할지 모르겠다면, 는 함께 배울 것을 권하고 싶습니다.pip ★★★★★★★★★★★★★★★★★」virtualenv이 모든 것이 잘 어울립니다.

virtualenv다음 질문에 관심이 있을 수 있습니다., , , , , , , , 등의 차이는 무엇입니까?(네, 알아요, 당신과 함께 신음해요.)

저는 디스트리뷰트 유지 및 디스트리뷰트2/패키지 기고자입니다.ConFoo 2011에서 Python 패키징에 대해 이야기한 적이 있으며, 최근에는 확장 버전을 쓰고 있습니다.아직 출판되지 않았기 때문에, 사물의 정의에 도움이 되는 발췌문을 소개합니다.

  • Distutils는 포장에 사용되는 표준 도구입니다.단순한 요구에는 잘 작동하지만, 확장에는 제한이 있고 사소한 것도 아닙니다.

  • Setuptools는 부족한 왜곡 기능을 메우고 새로운 방향을 모색하려는 욕구에서 탄생한 프로젝트입니다.일부 하위 커뮤니티에서는 이것이 사실상의 기준입니다.Python 핵심 개발자들이 눈살을 찌푸리게 하는 원숭이 패칭과 마법을 사용한다.

  • 디스트리뷰트는 개발자들이 개발 속도가 너무 느리고 진화가 불가능하다고 판단해 시작한 셋톱툴의 포크다.distutils2가 같은 그룹에 의해 시작되었을 때 그 개발은 상당히 느려졌다.2013년 8월 업데이트: 배포가 다시 setuptools로 병합되어 중단되었습니다.

  • Distutils2는 새로운 Distutils 라이브러리로, Distutils 코드 베이스의 포크로서 시작되었으며 셋업 툴(일부 툴은 PEP에서 상세하게 설명)에서 얻은 좋은 아이디어와 pip에서 영감을 얻은 기본 설치 프로그램입니다.Distutils2를 Import하기 위해 사용하는 실제 이름은 Python 3.3+ 표준 라이브러리 또는 2.4+ 및 3.1~3.2에 있습니다(백포트는 곧 사용 가능).Distutils2는 Python 3.3을 출시하지 않았으며 보류되었습니다.

상세 정보:

저는 곧 제 가이드를 완성하고 싶습니다.각 도서관의 장점과 단점에 대한 더 많은 정보와 인수인계 가이드가 수록될 것입니다.

메모: 권장되지 않는 답변입니다.Distribute는 폐지되었습니다.이 답변은 Python Packaging Authority가 설립된 이후 더 이상 유효하지 않으며, 이를 정리하는 데 많은 노력을 기울였습니다.


네, 알겠습니다.-o 현시점에서는 Distutils(원래 패키지 시스템)의 확장인 Setuptools의 포크인 Distribute가 바람직하다고 생각합니다.Setuptools가 유지보수가 되지 않아 분기되어 이름이 바뀌었지만 설치 시 setuptools 패키지 이름이 사용됩니다.대부분의 Python 개발자는 현재 Distribute를 사용하고 있다고 생각합니다만, 확실히 사용하고 있습니다.

저는 당신의 두 번째 질문에 질문 없이 답변한 것을 알고 있습니다.당신의 원래 문제에 대한 질문 없는 전제조건은 해결하지 않았습니다.

Python 3에 오픈 소스 라이브러리(SymPy, 궁금하다면)를 이식하려고 합니다.이를 위해서는 Python 3을 빌드할 때 2 to 3을 자동으로 실행해야 합니다.

그럴 필요 없어기타 전략은 http://docs.python.org/dev/howto/pyporting에서 설명합니다.

그러기 위해서는 분배를 이용해야 합니다.

:) distribute는 코드(docstring이 아닌)의 빌드 타임2 to 3 변환을 서포트합니다.이러한 변환은, http://docs.python.org/dev/howto/pyporting#during-installation 를 배포하는 다른 방법으로 실시할 수 있습니다.

2014년 말에 이 질문을 업데이트하여 다행히 Python 패키징 대란이 Continuum의 "conda" 패키지 매니저에 의해 크게 해결되었습니다.

특히 콘다는 신속하게 콘다 "환경"을 만들 수 있습니다.다양한 버전의 Python을 사용하여 환경을 구성할 수 있습니다.예를 들어 다음과 같습니다.

conda create -n py34 python=3.4 anaconda

conda create -n py26 python=2.6 anaconda

는 다른 버전의 Python을 사용하는 2개의 Python 환경("py34" 또는 "py26")을 만듭니다.

그런 다음 Python의 특정 버전을 사용하여 환경을 호출할 수 있습니다.

source activate <env name>

이 기능은 다른 버전의 Python을 처리해야 하는 경우에 특히 유용합니다.

또한 conda에는 다음과 같은 특징이 있습니다.

  • Python 불가지
  • 크로스 플랫폼
  • 관리자 권한이 필요 없습니다.
  • SAT 해결사를 통한 현명한 의존관계 관리
  • 링크해야 할 C, Fortran 및 시스템 레벨 라이브러리를 적절하게 처리합니다.

이 마지막 포인트는 과학 컴퓨팅 분야에서 특히 중요합니다.

언급URL : https://stackoverflow.com/questions/6344076/differences-between-distribute-distutils-setuptools-and-distutils2

반응형