2013-07-23 23 views
60

İki dalım var, Geliştirme ve Üretim. Her birinin bağımlılıkları, bazıları farklıdır. Gelişim içinde kendileri olan bağımlılıkları geliştirme noktaları. Aynı şekilde Üretim için. Her şubenin bağımlılıklarını 'needs.txt' adı verilen tek bir dosyada bekleyen Heroku'ya konuşlandırmam gerekiyor.Birden çok ortam için needs.txt nasıl özelleştirilir?

Düzenlemenin en iyi yolu nedir?

ben düşündüm Ne: (? Ortam değişkeni)

  • , her dalda bir tane (! Sık birleştirmeleri hayatta gerekir)
  • gereksinimleri kullanmak istediğim dosyasını Heroku söyle ayrı şartlar dosyaları koruyun
  • komut
+1

daha kolay dağıtmak senaryosu: 2 dosya bakımı. aralarında symlink kullanın. – Udy

cevap

107

Sen gereksinimleri dosyaları basamakla ve "-r" fla kullanabilirsiniz (geçici şube, geçici şube oluşturmak gereksinimleri dosyasını değiştirmek, işlemek, dağıtmak, silme) dağıtmak yaz g pip'in bir dosyanın içeriğini başka bir içeriğe dahil etmesini söyler.

`-- django_project_root 
|-- requirements 
| |-- common.txt 
| |-- dev.txt 
| `-- prod.txt 
`-- requirements.txt 

dosyaları içeriği şu şekilde görünecektir: Böyle bir modüler klasör hiyerarşisine ihtiyaçlarınızı patlak verebilir

common.txt:

# Contains requirements common to all environments 
req1==1.0 
req2==1.0 
req3==1.0 
... 

dev.txt:

# Specifies only dev-specific requirements 
# But imports the common ones too 
-r common.txt 
dev_req==1.0 
... 

prod.txt:

Heroku ait
# Same for prod... 
-r common.txt 
prod_req==1.0 
... 

dışında, artık böyle kurulum ortamları:

pip install -r requirements/dev.txt 

veya Heroku proje kökünde "requirements.txt" için özel olarak görünüyor beri

pip install -r requirements/prod.txt 

, sadece gerektiği prod, bunun gibi:

gereksinimleri.txt:

# Mirrors prod 
-r requirements/prod.txt 
+2

Heroku'daki farklı ortamlar için ayrı gereksinim dosyalarının nasıl kullanıldığı sorusunu ihmal ettiniz. –

+9

Cevabın buna hitap ettiğine inanıyorum. –

+1

Aşama için Heroku'da (ek hata ayıklama paketleri istiyorum) ve üretim ortamı (bu hata ayıklama paketlerine ihtiyacım olmadığı) için farklı gereksinimlere sahip olmanın bir yolunu arıyordum. Maalesef, @EdJ'in söylediği gibi, bu cevap buna değinmiyor. –

İlgili konular