2009-10-13 3 views
11

일반적으로 패키지 관리자를 통해 물건을 설치하는 경향이 있습니다. 그러나, 내가 많은 perl을 프로그래밍했을 때, 나는 CPAN, 최신 버전 및 모든 것을 사용할 것이다. 일반적으로 패키지 관리자 (macports, apt) 또는 pip/easy_install/setuptools를 통해 Python 모듈을 설치하는 가장 어려운 방법은 무엇입니까

, 나는 그것의 자신의 패키지 관리자를 통해 패키지 관리자를 통해 시스템 재료 및 언어 물건을 설치하는 데 사용 (보석/easy_install을 | PIP/CPAN) 이제

주로 파이썬을 사용하여, 나는 가장 좋은 방법이 무엇인지 궁금 ?

답변

17

시스템 파이썬 버전과 그 라이브러리는 배포시 소프트웨어에서 자주 사용됩니다. 사용하는 소프트웨어가 python의 동일한 버전과 배포본이있는 모든 라이브러리에 만족하면 배포 패키지를 사용하는 것보다 잘 작동합니다.

그러나 패키지의 개발 버전 또는 최신 버전 또는 이전 버전이 필요합니다. 그리고 더 이상 작동하지 않습니다.

개발을 위해 사용하는 Python 버전을 설치하고 buildout 또는 virtualenv 또는 둘 모두를 사용하여 개발 환경을 만들어 일반적으로 시스템 파이썬과 개발 환경을 서로 격리하는 것이 좋습니다.

+1

[pyenv] (https://github.com/yyuu/pyenv#readme)는 여러 Python 버전과 [virtualenvs] (https://github.com/yyuu/pyenv-virtualenv#readme)를 관리하는 훌륭한 도구입니다.). –

17

두 개의 완전히 반대되는 캠프가 있습니다. 하나는 시스템 제공 패키지이고 다른 하나는 별도 설치입니다. 저는 개인적으로 "시스템 패키지"캠프에 있습니다. 나는 각 측면에서 아래의 주장을 제공 할 것이다.

Pro 시스템 패키지 : 시스템 패키지 작성자는 이미 종속성 및 전체 시스템 정책 (파일 레이아웃 등)을 준수하는지 알고 있습니다. 시스템 패키지는 보안 업데이트를 제공하면서도 호환성을 손상시키지 않으므로 업스트림 작성자가 백 포트하지 않은 보안 픽스를 백 포트하기도합니다. 시스템 패키지는 "안전"합니다. 시스템 업그레이드 : 시스템 업그레이드 후에는 새로운 Python 버전이있을 수도 있지만, 시스템 포장기에서 나온 모든 Python 모듈은 여전히 ​​존재합니다. 데비안에 대한 모든 개인적인 경험입니다.

시스템 패키지 : 모든 소프트웨어가 시스템 패키지로 제공되거나 최신 버전으로 제공되지 않을 수 있습니다. 스스로 시스템에 설치하면 시스템 패키지가 손상 될 수 있습니다. 업그레이드하면 응용 프로그램이 손상 될 수 있습니다.

전문가 별 설치 : 일부 사람들 (특히 웹 응용 프로그램 개발자)은 원하는 패키지만으로 반복적 인 설치가 절대적으로 필요하며 시스템 Python과 완전히 분리되어 있다고 주장합니다. 자체 설치 대 시스템 패키지보다 훨씬 뛰어납니다. 자체 설치의 경우에도 여전히 시스템 파이썬을 수정할 수 있습니다. 별도의 설치로, 당신은하지 않을 것입니다. Lennart가 논의한 것처럼 이제는이 설정을 지원하는 전용 도구 체인이 있습니다. 사람들은이 방법 만 반복 가능한 결과를 보장 할 수 있다고 주장합니다.

별도 설치 : 버그 수정을 직접 처리해야하며 모든 사용자가 별도로 설치해야합니다. 웹 응용 프로그램의 경우 일반적으로 후자를 쉽게 구현할 수 있습니다.

+0

충분합니다. 나는 항상 setuptools와 특히 rubygems 등이/usr/local 트리에 설치되지 않는 이유에 대해 궁금해한다. 아 ~. 시스템 관리자로서의 가치는 무엇인가? (우리가 많은 것들이 아닌가?) 나는 당신의 접근 방식을 선호한다. 비록 꽤 문제가 파이썬 보인다.내 코를 잡고 "개발 환경 경로"로 가기 – chiggsy

+1

시스템 Python에 설치할 때 배포 패키지가 더 바람직하다는 데 완전히 동의합니다. 그러나 개발 작업과 많은 양산 작업 시스템을 위해서는 별도의 소프트웨어 환경을 별도로 설치해야합니다 (모든 소프트웨어가 업데이트되고 유지 관리되는 배포 패키지가 아닌 경우). –

+0

개인 정책으로, 나는 시스템 패키지가없는 소프트웨어를 사용하거나 시스템 패키지가 제공하는 것과 다른 버전을 사용하지 않는다. 이것은 내가 많은 패키지를 사용할 수 없다는 것을 의미 할 수도있다. 물건을 다시 구현해야 할 수도 있습니다. 더하기 측면에서, 나는 "안정적인"소프트웨어를 사용하는 것에 국한되어 있으므로 일부 라이브러리는 다른 패키지의 출시되지 않은 버전이 필요하다고 판단하기 때문에 각각의 개발 릴리스를 추적 할 필요가 없습니다. –

관련 문제