2012-06-11 4 views
8

저는 파이썬 응용 프로그램을 패키징하는 세계에 뛰어 들고 있으며, 내가 다루어야 할 모든 개념과 옵션으로 인해 머리가 회전하기 시작하는이 혼란 상태에 빠지게되었습니다.distutils, distutils2, pip 및 요구 사항

질문 :

내가 뭘 달성해야합니까? git 서버에있는 소스에서 Python 프로젝트를 전개하십시오. 배포 도구는 모든 종속성을 가져와 설치해야하며, 대부분의 종속성은 PIP를 통해 사용할 수 있으며 하나는 Git을 통해 가져와 설치해야합니다. 최종 결과는 핍를 통해 설치해야한다, 그래서 나는 같은 일을 수행 할 수 있습니다

[~] git clone git://some/path/project.git 
[~] pip install project/ 

컨텍스트 : 은 현재 내가 Distutils2 내가하고 싶은 일을하려고 노력하고 있지만, 그 setup.py를 사용하여 만든 것 'generate-setup'명령은 Pip와 함께 실행되지 않습니다.

Distutils2는 미래에 대한 가장 중요한 증거이기 때문에 사용하고 싶었습니다. 그러나 모든 도구에 대한 다양한 문서는 끔찍한 정보이며 (낡고 부정확 한 정보와 섞인 정확한 정보) 사람의 건강을 의심하게 만듭니다.

그럼 어떻게해야합니까? distutils와 setup.py에 충실 하시겠습니까? 아니면 Buildout과 같은 것을 살펴볼 필요가 있습니까?

친절한 응답자가 특정 도구로 수행해야하는 작업을 설명해 주실 수 있습니까 (예 : Distutils2를 사용하여 코드를 배포하고, PIP를 사용하여 종속성을 설치하고, git 종속성을 위해 스크립트를 작성하고 모든 것을 XYZ로 묶습니다).

편집 : Distutils2 1.0a4를 사용하고 있는데 이는 문서와 호환되지 않는 것으로 보입니다.

편집 2 : 질문을 재 형식화하여 내 질문에 대한 내용을 명확하게 만듭니다.

Edit3 : 이것은 파이썬의 패키징 및 배포 툴 체인을 깨뜨린 네 번째 시도입니다. 나는 다른 사람들이 내 일을하도록 내버려 두려는 것은 아니지만 신인을 위해 특정 도구가해야 할 일을 해독하는 것은 거의 불가능하다. 특히 도구 간의 기능적 중복 때문에. 나는 비밀리에 나를 시작할 수있는 현자들에 둘러싸여있는 실리콘 밸리에 있지 않아 공개적으로 이용 가능한 문서는 쓸모가 없다.

최종 편집 : 이 질문을 시작할 때 virtualenv를 Buildout으로 대체하는 것에 대해 정말로 생각하지는 않았지만. 그러나 내 연구를하는 동안 나는 항상 알고있는 것을 깨달았지만, 완전히 명확하게 내게 오지 않았다. Python 패키징 및 배포 자동화에는 여러 가지 방법이 있습니다. 물건을 완성하는 데 도움이되는 많은 도구가 있습니다. 그러나 도구간에 중요한 기능적 오버랩이있는 동안 도구 체인은 계속 진화하고 있으며 지금까지 명확한 "표준 모범 사례"가 없습니다. 배포 툴 체인 무기 경쟁은 여전히 ​​열이 많이 남았고 명확한 승리자가 아직 나오지 않았습니다. 이것은 우리에게 혼동을 줄 수 있습니다. 파이썬에서 대부분의 똥이 작동 할 것이라고 기대하는 놈들입니다. 내가했던 것 (distutils/setuptools + pip + virtualenv 또는 Buildout과 통합 된 준결승)은 확실히 dooable이지만,별로 의미가 없으며, 불가능한 것이 아니기 때문에 - 아무도 그것을하지 않기 때문에. 이 수준의 세련미가 필요하면 커밋해야합니다. 개인적으로 나는이 프로젝트를 위해 virtualenv를두고 Buildout을 채택하기로 결정했다.

답변

7

buildout을 살펴보십시오. mr.developer이라는 빌드 아웃 플러그인과 함께 당신이 요구하는 모든 것을 할 수있는 배치 시스템을 구성 할 수 있습니다.

웹 buildout 구성에 대한 예와 프리젠 테이션의 많음이있다, 여기까지 몇 당신이 시작됩니다 http://www.slideshare.net/djay/buildout-how-to-maintain-big-app-stacks-without-losing-your-mind

이의 YouTube 동영상을 포함 : buildout에

+0

실제로 내가 찾던 내용이 아니더라도 링크 모음이 Buildout과 관련된 빈 공백을 없애는 데 성공했습니다. 고맙습니다. – JanezStupar

1

그것은 어려운 일 필요는 없습니다 : Jenkins를 설치하고 프로젝트가 필요로하는 패키지를 정의하는 PIP의 requirements.txt files를 사용합니다. 그런 다음 필요한 패키지를 설치하는 등 다양한 작업을 수행 할 수 있도록 Jenkins에서 빌드를 구성 할 수 있습니다. 저장소에서 소스 코드를 가져 와서 전체 프로젝트를 빌드 + 설치합니다.

+0

Jenkins가 프로젝트를 설치할 수 있다는 사실 자체 목표 인 지속적인 통합 테스트를 제공하는 것이 요구 사항입니다. 그러나 Jenkins를 배포 작업에 사용하는 것은 엄청난 과잉입니다! 더 나은 도구를 사용할 수있게되면 꽤 큰 패키지입니다! –

+0

배포에 [fabric] (http://fabfile.org)을 사용할 수 있습니다. – jfs