Topic: WinPackIt, il modo veloce per distribuire un programma Python su Windows  (Letto 102 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.020
  • Punti reputazione: 9
    • Mostra profilo
Ho terminato (per ora) un progettino natalizio: WinPackIt, il modo facile (o quasi facile) per realizzare distribuzioni stand-alone di programmi Python su Windows.

Tutto parte da un suggerimento che avevo scritto sul mio blog, di usare le distribuzioni "embeddable" di Python per Windows, per realizzare degli ambienti "chiusi" tipo virtual environment in cui installare pip, i pacchetti esterni necessari e i file del programma Python che ci interessa distribuire. Adesso ho messo insieme uno script che automatizza la procedura, producendo automaticamente delle "build" pronte da distribuire all'utente finale.

Lo trovate su PyPI https://pypi.org/project/WinPackIt/ (quindi potete installarlo con pip), il sorgente su GitHub https://github.com/ricpol/winpackit, e la documentazione (pure in Italiano! https://github.com/ricpol/winpackit/blob/master/docs_ITA.rst che è tradotta dall'inglese quindi fa un po' schifo... cioè, non che l'inglese sia proprio scott fitzgerald ma insomma).
Su mio blog https://pythoninwindows.blogspot.com/2019/12/winpackit-il-modo-facile-per.html trovate qualche riga di presentazione in più.

Fatemi sapere... soprattutto segnalatemi i bachi... che ce ne saranno un bel po'...

Offline nuzzopippo

  • python erectus
  • ***
  • Post: 228
  • Punti reputazione: 0
    • Mostra profilo
Molto interessante, al momento non mi è possibile fornire feedback (windows? Cu fu?) ma me lo studierò appena possibile, grazie e buon 2020 :)

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.020
  • Punti reputazione: 9
    • Mostra profilo
Di per sé il codice gira anche sotto Linux...
Il problema, come ho scritto nella documentazione, è che il processo di pacchettizzazione richiede *anche* di far girare (con subprocess) il Python "target" (quello della distribuzione) un po' di volte... e siccome il Python "target" ovviamente è un eseguibile Windows, su Linux col cavolo che gira...

Questo in realtà è un problema *molto* fastidioso perché appunto, mi piacerebbe che WinPackIt potesse aiutare anche gli sviluppatori Linux che scrivono un programma e vogliono distribuirlo a un utente Windows, senza essere costretti a strani magheggi di cross-compilazione.

Adesso il prossimo passaggio (che porterà alla versione "finale" 1.0) è appunto quello di aggiungere un'opzione per una "delayed build"... in pratica, WinPackIt produce una build che contiene solo Python e i file del tuo progetto... ma niente dependency, e niente di tutto quello che richiederebbe di far girare il Python target sulla tua macchina. Invece sarà l'utente a completare l'installazione, facendo doppio clic su "install.bat"... questo scaricherà le dependency necessarie, e farà tutte le operazioni direttamente sulla macchina dell'utente.
Ovviamente questo è più pericoloso, perché se qualcosa va storto, va storto sulla macchina dell'utente e tu non hai possibilità di rimediare... Ma è anche l'unico modo per usare WinPackIt in modo completo anche su Linux.