2013-07-23 29 views
60

Tôi có hai chi nhánh, Development and Production. Mỗi phụ thuộc có một số khác nhau. Các điểm phát triển phụ thuộc vào bản thân chúng đang phát triển. Tương tự như vậy cho sản xuất. Tôi cần triển khai tới Heroku, điều này dự kiến ​​sự phụ thuộc của mỗi nhánh trong một tệp duy nhất được gọi là 'requirements.txt'.Cách tùy chỉnh requirements.txt cho nhiều môi trường?

Cách tốt nhất để sắp xếp là gì?

Những gì tôi đã nghĩ:

  • Duy trì các file yêu cầu riêng biệt, một ở từng ngành (phải tồn tại hòa trộn thường xuyên!)
  • Nói Heroku mà yêu cầu nộp Tôi muốn sử dụng (biến môi trường?)
  • Viết kịch bản triển khai (tạo chi nhánh tạm thời, sửa đổi yêu cầu tập tin, cam kết, triển khai, xóa chi nhánh tạm thời)
+1

kịch bản triển khai dễ dàng hơn: duy trì 2 tệp. sử dụng liên kết tượng trưng giữa chúng. – Udy

Trả lời

107

bạn có thể thác các file yêu cầu của bạn và sử dụng "-r" fla g để nói pip để bao gồm các nội dung của một tập tin bên trong một tập tin khác. Bạn có thể thoát ra khỏi những yêu cầu của bạn thành một hệ thống phân cấp thư mục mô-đun như thế này: nội dung

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

Các tập tin sẽ trông như thế này:

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:

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

Bên ngoài Heroku, bạn có thể bây giờ môi trường thiết lập như thế này:

pip install -r requirements/dev.txt 

hoặc

pip install -r requirements/prod.txt 

Kể từ Heroku trông đặc biệt cho "requirements.txt" ở thư mục gốc của dự án, nó nên chỉ mirror prod, như thế này:

requirements.txt:

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

Bạn đã bỏ qua vấn đề về cách sử dụng các tệp yêu cầu riêng biệt cho các môi trường khác nhau trên heroku. –

+9

Tôi tin rằng câu trả lời của tôi đã giải quyết điều đó. –

+1

Tôi đang tìm cách có các yêu cầu khác nhau trên Heroku để dàn dựng (nơi tôi muốn các gói gỡ lỗi bổ sung) và môi trường sản xuất (nơi tôi không cần các gói gỡ lỗi này). Thật không may, như @EdJ nói, câu trả lời này không giải quyết vấn đề này. –

Các vấn đề liên quan