2015-08-03 18 views
8

Tôi có hai dự án python chia sẻ một số thư viện chung được tổ chức thành ba kho git: project1, project2 và common-lib. Hai dự án này có nghĩa là mỗi dự án sẽ được triển khai cho beanstalk đàn hồi đi kèm với chung-lib.Triển khai Python và phụ thuộc vào cây đậu đàn hồi

Tôi đang cố gắng tìm cách thành ngữ nhất để cấu trúc các dự án này để dễ dàng phát triển cho địa phương và xây dựng tệp zip để triển khai sử dụng eb deploy.

Thiết lập mọi thứ cho phát triển địa phương thật dễ dàng. Chỉ cần kiểm tra mỗi repo và làm một python setup.py develop trong common-lib để làm cho các thư viện phổ biến có sẵn trong virtualenv.

Để triển khai EB, bạn nên có một lệnh setup.py duy nhất tạo ra một EB compatible zip file chứa dự án và chung-lib với tệp requirements.txt liệt kê phụ thuộc pip cho cả hai. Tôi chưa tìm thấy một cách dễ dàng để làm điều này mà là một chút ngạc nhiên bởi vì tôi tưởng tượng đây là một kịch bản khá phổ biến.

Tôi không thể chỉ định kho git cho chung-lib trong tệp project.txt hoặc project2's requirements.txt vì kho lưu trữ sẽ không thể truy cập được từ AWS.

+1

Vì vậy, hãy làm cho nó có thể truy cập: http://stackoverflow.com/questions/34727442/how-to-deploy-private-python-pip-dependency-with-amazon-aws-elastic-beanstalk/34727443#34727443 – smentek

+0

@eddie Giải pháp của bạn cho điều này là gì? Tôi không chắc chắn, nhưng tôi có thể gặp vấn đề tương tự. Require.txt của tôi liệt kê tất cả các phụ thuộc của bên thứ ba của tôi, nhưng loại trừ dự án tôi đang phát triển bản thân mình. Vì vậy, tôi gặp phải một lỗi DistributionNotFound nơi phân phối tham chiếu là MyApp (aka ứng dụng tôi đã viết). Là giải pháp của bạn để làm cho kho lưu trữ riêng có thể truy cập thông qua AWS bằng cách sử dụng giải pháp được cung cấp bởi @smentek? –

+0

Không làm điều này. Tuy nhiên, tôi nối (Windows) hoặc liên kết cứng các gói phổ biến của tôi vào nhiều gói khác nhau. Đó là một nỗi đau để thiết lập cho các nhà phát triển sau khi kéo, nhưng hoạt động rất độc đáo với git và EBS. –

Trả lời

0

Đối với tôi, cách thích hợp là tạo gói python từ lib chung, xuất bản nó lên máy chủ pypi riêng, như https://gemfury.com/l/pypi-server. Có nó như là một tham chiếu trong requirements.txt như là một gói python.

Một giải pháp khác có thể bao gồm phổ biến-lib là một mô-đun con git https://git-scm.com/docs/git-submodule. Với điều đó bạn sẽ có sự tách biệt, bởi vì nó sẽ sống trong một kho lưu trữ riêng biệt và bạn sẽ có một tham chiếu đơn giản như một mô-đun con git trong dự án của bạn.

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