2013-06-01 3 views
3

저는 Heroku에 Python Django 앱을 배포하고 있습니다. Heroku와 같은 특정 환경에 배포 할 때만 requirements.txt 파일을 사용자 정의하고 싶습니다. 환경 변수 등에서 이것을 설정하고 싶지만, pip에는 그런 기능이 없다고 생각합니다. 내 생각은 Heroku가 dependencies가 설치되기 전에 내 requirements.txt에 추가 할 스크립트를 배치하기 위해 제공하는 후크를 사용하는 것이 었습니다. 그게 가능하니?배포시 Heroku에서 pip의 requirements.txt를 사용자 정의하는 방법은 무엇입니까?

답변

11

다른 요구 사항 파일에 요구 사항 파일을 포함 할 수 있습니다.

# requirements.txt  
-r requirements/base.txt 

# requirements/base.txt 
django==1.6 

# requirements/heroku.txt 
-r requirements/base.txt 
djpostgresurlthing==1.0.0 

# requirements/dev.txt 
-r requirements/base.txt 
django-debug-toolbar 

나는 일반적으로 단지 다른 요구 사항 파일을 포함하는 프로젝트의 루트에 requirements.txt 파일을 보관 (보통 자극 또는베이스), 환경 특정 물건과 함께 requirements/ 폴더를 확인합니다. 따라서 로컬에서는 pip install -r requirements/dev.txt이고 서버는 pip install -r requirements/prod.txt입니다.

heroku를 사용하는 경우 heroku를 사용하려면 루트 requirements.txt가 필요합니다. 따라서이 파일을 사용하여 heroku 요구 사항 파일을 포함시킬 수 있습니다.

# requirements.txt  
-r requirements/heroku.txt 

heroku에게 다른 파일을 사용하는 방법이있을 수 있습니다. 하지만이 방법을 사용하면 쉽게 해결할 수 있습니다.

+0

내가 추가해야하는 종속성 사용자 정의에는 암호가 포함되어 있으므로이를 repo 자체에 저장할 수는 없지만 환경 변수 var와 같은 것을 사용할 것이라고 명시해야합니다. 이견있는 사람? –

1

당신은 표준 HTTPS의 인증 수행 할 수

# requirements.txt 
git+https://user:[email protected]/dir/repo.git 

하지만 훨씬 청소기 방법을 참조 요구 사항의 자신의 세트를 호스트하는 것입니다 : https://devcenter.heroku.com/articles/python-pip#private-indexes

를 다른 환경 요구 사항을 관리를 간단히 사용할 수 있습니다 생산을위한 requirements.txt과 로컬 개발을위한 requirements-dev.txt 또는 다른 파일의 의존성 포함을위한 @ yellottyellott 제안 중 하나.

관련 문제