2010-06-06 2 views
5

저는 파이썬 생태계에 익숙하며 모듈 편집에 대해 질문합니다.임의의 VCS 저장소에서 파이썬 모듈을 설치하는 모범 사례

저는 PyPi에 배포 된 여러 타사 모듈을 사용합니다. C 및 자바 배경에서 오는, 나는 easy_install <whatever>의 용이함을 좋아합니다. 이것은 새로운, 멋진 세계,하지만 난이 두 가지 이유로 새로 설치 한 모듈을 편집 할 때 모델은 분해 :

  1. egg 파일은 파일 시스템의 어딘가에 미친 폴더 또는 아카이브에 저장 될 수있다.
  2. egg을 사용하면 원래 프로젝트의 버전 제어 시스템 사용을 배제하는 것처럼 보입니다. 데비안 패키지를 사용하면 원래 VCS 저장소에서 개발이 배제됩니다.

임의의 VCS 저장소에서 모듈을 설치하는 가장 좋은 방법은 무엇입니까? 다른 스크립트에서는 import foomodule까지 계속 진행하고 싶습니다. 모듈의 소스 코드를 수정하면 추가 명령을 수행해야합니까?

답변

2

당신은 개발을하지만 개발 버전이 시스템에 의해 달걀로 처리가하고 싶은거야 (인스턴스가 엔트리 포인트를 획득하기 위해)?당신은 소스를 확인하고 수행하여 Development Mode를 사용해야합니다 그럼 경우 프로젝트가 setuptools에 위에 필요한 기반 프로젝트, 빠른 주위 작업이 명령입니다하지 일어나는 경우

python setup.py develop 

를 :

python -c "import setuptools; execfile('setup.py')" develop 

당신이 이제까지 setuptools에 대해 알고 싶어 거의 모든 (easy_install을의 기초)하여 setuptools docs에서 사용할 수 있습니다. 또한 docs for easy_install이 있습니다.

개발 모드는 easy_install에서와 같은 방식으로 가져 오기 경로에 프로젝트를 추가합니다. 다음에 모듈을 가져올 때 변경 사항을 앱에서 사용할 수 있습니다.

다른 언급했듯이 편집 기능이 없어도 최신 버전을 얻고 싶지만 스냅 샷 만 찍을 수 있고 버전 번호를 그대로 사용하면 버전 관리 URL을 직접 사용할 수 있습니다. 프로세스의 일부. 나는 그것이 Subversion을 가지고 있으며 다른 사람들도 그렇게 생각한다고 알고 있지만 그 문서를 찾을 수는 없다.

+0

완벽하게, 정확히 내가 원했던 것은 :) 감사합니다. – fmark

1

PYTHONPATH environment variable을 사용하거나 코드를 사이트 패키지 어딘가에 심볼릭 링크 할 수 있습니다.

+0

'PYTHONPATH'에 정확히 무엇을 추가합니까? '__init __. py'를 담고있는 폴더? – fmark

1

easy_install에서 설치 한 패키지는 일반적으로 개발자가 공식 버전을 릴리스 할 때 만든 개발자 버전 컨트롤의 스냅 샷에서 오는 경향이 있습니다. 따라서 easy_install을 통한 편리한 자동 다운로드와 버전 관리를 통한 최신 코드 업데이트 중 하나를 선택해야합니다. 후자를 선택하면 python setup.py install을 실행하여 버전 제어 체크 아웃에서 직접 파이썬 패키지 색인에 표시된 대부분의 패키지를 빌드하고 설치할 수 있습니다.

기본 설치 디렉토리가 마음에 들지 않으면 사용자 정의 위치에 대신 설치하고 값이 설치된 패키지의 상위 폴더 경로 인 값 PYTHONPATH을 내보낼 수 있습니다.

+0

후자의 옵션을 선택합니다. 소스 코드를 반복적으로 수정하는 중이라면 모든 수정 후에'python setup.py install'을 다시 실행해야합니까, 아니면 한번만 다시 실행해야합니까? 'python setup.py install'은 무엇을합니까? – fmark

+0

패키지에 따라 다릅니다. 빌드/인스톨 단계없이 패키지가 버전 관리에서 사용 가능하도록 설계 되었다면, checkout 디렉토리의 부모에서'PYTHONPATH'를 가리킬 수 있습니다. 그렇지 않으면 안전하게 가져 오기 전에 빌드하고 설치해야합니다. 'python setup.py install'은 setuptools 또는 distutils로 만든 패키지가 자신을 빌드하고 추가 파일 python 패키지를 위해 시스템의 일반적인 위치에 빌드 파일을 설치하도록합니다. 다음은 몇 가지 문서입니다. http://docs.python.org/distutils/ –

3

Pip 파일을 설치하면 Subversion, git, Mercurial 또는 bzr 저장소에 URL을 제공 할 수 있습니다.

pip install -e svn+http://path_to_some_svn/repo#egg=package_name 

: 나는 cmdutils의 최신 버전을 다운로드하고 싶다면 는 -e HG + https://[email protected]/ianb/cmdutils#egg=cmdutils

를 설치 PIP. (무작위로 포장하기로 결심했다.)

이 파일을 virtualenv (-E 매개 변수 사용)에 설치하고 cmdut를 내 virtualenv 폴더의 최상위 수준에있는 src 폴더에 pip 설치했습니다.

pip install -E thisIsATest -e hg+https://[email protected]/ianb/cmdutils#egg=cmdutils 

$ ls thisIsATest/src 
cmdutils 
+1

여기서 소스 코드로 다운로드 할 수 있습니까? 'svn'이 다운로드 한 소스 코드를 수정하면, 어떤 명령을 실행해야합니까? – fmark

+0

나는 그 질문에 대한 대답을 포함하여 더 많은 정보로 내 대답을 업데이트했습니다. – RyanWilcox