2011-09-12 28 views
10

TL; DR Komut dosyalarını arka planda sessizce otomatik olarak güncelleyen bir modüle ihtiyacım var.python komut dosyasını otomatik olarak günceller

Kullanıcılara dağıttığım bir Python betiğiyim. Bunu sık sık güncellerim ve sonra güncellemelerini (PIP aracılığıyla) istemelarını isterim. Açıkçası, bu sadece uygulamayı kullanmak isteyen, güncellemeyi düşünmeyen kullanıcılar için yüksek bir öncelik değil.

Uygulamamı, Google Chrome gibi arka planda otomatik olarak yaptığı gibi otomatik olarak güncellemeyi istiyorum. Bunu zaten yapmamı sağlayan bir kütüphane var mı? Değilse, bunu yapmak için PIP/dağıtım modülünü kullanmanın basit bir yolu var mı?

+0

fyi - pip sudo/admin privs kullanarak sistem dizinlerine yüklenir, bu yüzden kullanıcılar – jterrace

+0

'u güncelleme ayrıcalıklarına sahip olmayabilirler. Kullanıcının homolojisine yüklemek için kullanılabilir (~/.myCLIapp/altında mıyım?)? En kötü durumda, kesinlikle bir virtualenv kurabilir miyim? –

cevap

1

Bunu yapmanın en kolay yolu, komut dosyasının çalıştırıldığında işaret ettiği bir web hizmeti kurmaktır. Web servisi, komut dosyasının kendi sürüm numarasına göre kontrol edebileceği bir sürüm numarası verebilir. Sürüm numarası daha yüksekse, kendini güncelleyebilir ve yeniden çalıştırabilir.

+2

Elbette, bunu düşündüm ve yarım prototip oluşturdum. Ama işler biraz karmaşıklaşır - ne olursa olsun bir senaryodan daha fazlası olursa, bağımlılık varsa, vs. Bu yüzden muhtemelen PIP kullanmalıyım. –

+0

Bu tekniği geçmişte basit scriptler Wilduck için kullanmıştım. Paul, bağımlılıklarla ilgili problemlerin olduğu doğrudur. – syrion

1

Geliştirdiğim bir açık kaynak uygulaması için BitRock ile denedim. Otomatik güncellemelere sahip bir uygulama için platformlar arası yükleyiciler sağlarlar. Uygulamanız açık kaynaksa lisanslama ücretsizdir, ancak ticari ürünler lisans satın almayı gerektirir. Uygulamanız küçükse çok fazla olabilir, ama yine de tek seçenek olarak verebileceğimi düşündüm.

1

Pip yüklemesi zaten sizin için çalışıyorsa, neden başlangıçta os.system("pip install -U myscript") yapamazsınız? Bu biraz kirli, ama geliştiriciler için pip ile dağıtıyor.

İlgili konular