Tôi có một số ứng dụng python bao gồm các tập lệnh/mô-đun cần được đóng gói và triển khai dưới dạng RPM.Phân phối gói python cùng với các phụ thuộc mô-đun bằng cách sử dụng RPM
Bit khó hơn là mỗi ứng dụng phải được phân phối cùng với tất cả các phụ thuộc của mô-đun python và chúng nên được sử dụng tùy theo bất kỳ hệ thống nào được cài đặt rộng.
Máy chủ mục tiêu cho một số RPM này có quyền truy cập mạng bị hạn chế, do đó, RPM phải chứa mọi thứ cần thiết để chạy ứng dụng, thay vì tải xuống bất kỳ thứ gì vào thời gian triển khai.
Tôi đã xem xét đóng gói và phân phối virtualenv, nhưng việc chuyển vị trí virtualenv dường như không được hỗ trợ tốt.
Tôi đã xem zc.buildout nhưng đã tìm thấy tài liệu bị thiếu. Tôi có thể xem cách tải xuống các phụ thuộc trong quá trình phát triển, chứ không phải cách phân phối chúng như là một phần của ứng dụng lớn hơn. Có thể các ứng dụng khác nhau yêu cầu các phiên bản khác nhau của cùng một mô-đun, vì vậy chúng không nên được cài đặt rộng rãi.
Điểm đau khác là bất kỳ tập lệnh python nào trong ứng dụng cần được sửa đổi để sử dụng sys.path khác trong khi phát triển và sau khi triển khai, tôi không thể thấy rõ ràng về điều này.
Các đề xuất về cách tốt nhất để đạt được điều này? Một bản tóm tắt lý tưởng của công việc này từ quan điểm của nhà phát triển sẽ như thế nào:
- nguồn tải về ứng dụng
- chạy kịch bản để lấy phụ thuộc module cụ thể nếu không có mặt (có lẽ sử dụng pip)
- chạy kịch bản để xây dựng ứng dụng python và gói nó cũng như tất cả các phụ thuộc đã tải xuống vào RPM
RPM cuối cùng sẽ có thể cài đặt và chạy trên máy chủ không có quyền truy cập mạng và chỉ cài đặt trình thông dịch python.
Bạn có thể phân phối một python độc lập có thể thực thi - được đóng gói trong RPM? Bạn có cần mã nguồn của mình để có sẵn cho người dùng không? Nếu không nhìn ở đây http://stackoverflow.com/questions/5458048/how-to-make-a-python-script-standalone-executable-to-run-without-any-dependency – Anshul
Tôi đã không sử dụng nó, nhưng [conda] (http://www.continuum.io/blog/conda) nhằm mục đích xử lý các trường hợp như của bạn. Hãy xem phần "Phát gói của riêng bạn" tại liên kết này. –
Bạn nên sử dụng pip pip hoặc pip "wheel wheel" – ionelmc