Virtualenv 및 소스 버전 제어


84

저는 최근에 Django 프로젝트를 시작했고 virtualenv가 여러 가지 이유로 정말 유용하다는 것을 금방 깨달았습니다. virtualenv와 프로젝트를 설정했지만 이제 소스 제어에 어떤 파일을 추가해야하는지 궁금합니다 (제 경우에는 Mercurial). venv 폴더 아래에 모든 파일을 추가해야합니까? 동료가 환경을 다시 설정하지 않고도 즉시 복제하고 작업을 시작할 수 있도록하려면 어떻게해야합니까?


18
virtualenv를 소스 제어하에 두는 것은 권장하지 않습니다. Python 버전, OS 또는 32/64 비트 플랫폼간에 이식 할 수 없습니다. 대신 ~/path/to/virtualenv/bin/pip freeze > ~/path/to/repo/requirements.txt. 다른 개발자는 자체 virtualenv를 설정해야하지만 말 그대로 virtualenv ~/path/to/env, ~/path/to/env/bin/pip install -r ~/path/to/requirements.txt.
AdamKG

답변:


106

requirements.txt프로젝트에서 커밋 하는 "요구 사항"파일 (일반적으로 )을 생성합니다 .

pip freeze > requirements.txt

그런 다음 각 개발자는 자체 virtualenv를 설정하고 다음을 실행합니다.

pip install -r requirements.txt

6

이러한 모든 환경 문제는 파이썬 / 장고 개발을 할 때 흔히 발생합니다! 이 모든 문제를 겪었고 몇 가지 솔루션을 테스트했습니다! 내가 테스트 한 것 :

  1. 로컬에서 실행되는 프로젝트
  2. virtualenv에서 실행되는 프로젝트
  3. VM에서 실행되는 프로젝트
  4. vagrant를 사용하여 VM에서 실행되는 프로젝트

내가 찾은 최고의 솔루션은 # 4! 내가 일했던 회사는 팀의 각 사람이 다른 OS, 모든 종류의 Windows, Mac 및 Linux를 가지고 있기 때문에 각 환경에 대한 모든 종속성을 설치하는 데 시간이 걸립니다! 그래서 우리는 정말 좋은 virtualenv를 시도하기로 결정했습니다! 그러나 여전히 각 사람은 자신의 환경을 설정해야합니다. virtualenv의 문제는 모든 파이썬 소스가 사용자가 만든 환경 내에 있다는 것입니다! 따라서 해당 파일을 소스 버전 제어로 푸시하지 않습니다! 최고의 솔루션은 # 4였습니다. 바로 이것이 제가 필요로했기 때문에 Vagrant는 Chef를 사용하여 환경을 설정하므로 몇 가지 레시피를 작성하고 vagrant가 실행하도록 놔두면됩니다! 그런 다음 해당 레시피를 SCM에 푸시하면 다음 사람이 SCM에서 파일을 가져와 VM을 다시로드하면 모든 종속성이 자동으로 설치됩니다!

주제에 대해 더 자세히 설명하는 블로그 게시물이 있으며 github에서 Django Blank 프로젝트를 만들었 으므로 vagrant를 사용하여 프로젝트의 시작점을 얻을 수 있습니다.

http://arthurnn.com/blog/2011/11/25/easy-django-quickstart/ (링크가 더 이상 활성화되지 않아 Wayback Machine에 연결됨)

편집하다

Chris Pratt의 솔루션도 좋지만 일부 라이브러리는 모든 OS에 설치하기가 그렇게 간단하지 않습니다. 예를 들어 Mac의 많은 사람들이 MySQLdb-python을 설치하려고 할 때 문제가 발생합니다. 이것은 정말 일반적인 라이브러리이지만 팀의 모든 사람이이 문제를 해결하는 데 시간을 투자해야한다면 전혀 좋지 않습니다!


MySQLdb-python이것은 전체 환경을 사용하는 정말 좋은 이유이지만 pip / requirements.txt로도 수행 할 수 없습니까?
kbuilds 2014-08-27
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.