2011-09-12 47 views
10

TL; DR Tôi cần một mô-đun sẽ tự động cập nhật tập lệnh của tôi dưới nền, âm thầm.tự động cập nhật tập lệnh python

Tôi có một tập lệnh Python mà tôi phân phối cho người dùng. Tôi thường xuyên cập nhật điều này, và sau đó yêu cầu họ cập nhật nó (thông qua PIP). Rõ ràng, đây không phải là ưu tiên cao đối với người dùng, những người chỉ muốn sử dụng ứng dụng, không nghĩ đến việc cập nhật ứng dụng.

Tôi muốn tự động cập nhật ứng dụng của mình, như Google Chrome, tự động, chạy ẩn, trong nền. Có thư viện nào cho phép tôi làm điều này không? Nếu không, có cách nào đơn giản để sử dụng mô-đun PIP/phân phối để làm điều đó không?

+0

fyi - pip cài đặt vào thư mục hệ thống bằng cách sử dụng sudo/admin privs, vì vậy người dùng có thể không có quyền cập nhật – jterrace

+0

Có thể sử dụng nó để cài đặt trong homedir của người dùng (nói, theo ~/.myCLIapp /) của tôi không? trong trường hợp xấu nhất, tôi chắc chắn có thể cài đặt một virtualenv? –

Trả lời

1

Cách dễ nhất để thực hiện việc này là thiết lập dịch vụ web mà tập lệnh ping khi nó chạy. Dịch vụ web có thể trả lại số phiên bản, tập lệnh có thể kiểm tra dựa trên số phiên bản của riêng nó. Nếu số phiên bản cao hơn, nó có thể tự cập nhật và chạy lại.

+2

Chắc chắn, Ive nghĩ về điều này, và có một nửa nguyên mẫu được xây dựng. Nhưng mọi thứ trở nên phức tạp một chút - nếu nó trở nên nhiều hơn một kịch bản, điều gì sẽ xảy ra nếu nó có phụ thuộc, vv Đó là lý do tại sao tôi cho rằng nó có lẽ nên sử dụng PIP. –

+0

Tôi đã sử dụng kỹ thuật này với thành công trong quá khứ cho các kịch bản đơn giản, Wilduck. Paul đúng là nó có vấn đề với phụ thuộc. – syrion

1

Tôi đã thử nghiệm với BitRock cho một ứng dụng nguồn mở mà tôi đang phát triển. Chúng cung cấp trình cài đặt đa nền tảng cho một ứng dụng có bản cập nhật tự động. Cấp phép là miễn phí nếu ứng dụng của bạn là mã nguồn mở, nhưng các sản phẩm thương mại yêu cầu mua giấy phép. Nó có thể là quá mức cần thiết nếu ứng dụng của bạn nhỏ, nhưng tôi nghĩ rằng tôi vẫn sẽ cung cấp cho nó như là một lựa chọn.

1

Nếu cài đặt pip đã hoạt động cho bạn, tại sao bạn không thể thực hiện os.system("pip install -U myscript") khi khởi động tập lệnh? Đây là kinda bẩn, nhưng như vậy là phân phối thông qua pip cho người không phát triển.

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