Rilascio solo exe al cliente di uno script python/streamlit senza .py

di il
8 risposte

Rilascio solo exe al cliente di uno script python/streamlit senza .py

Ciao a tutti, sono un newby di Python ma programmo da diverso tempo in diversi linguaggi.

Ho creato uno script senza interazione utente e, usando pyinstaller, creo tranquillamente l'exe e posso consegnarlo al cliente.

Ho invece dovuto creare un'interazione e quindi ho creato un script python con streamlit e seguendo una guida ho creato un wrapper e, tramite pyinstaller, ho creato l'exe.

Funziona tutto ma sono costretto a consegnare, oltre all'exe del wrapper anche il file .py dello script.

Come faccio ad evitare di consegnare il sorgente .py al cliente ?

Voi come fate?

Ci sono altre soluzioni ?

Grazie.

8 Risposte

  • Re: Rilascio solo exe al cliente di uno script python/streamlit senza .py

    Ciao loky,

    per una cosa simile avevo trovato interessante la possibilità di utilizzare npm per poter buildare il tutto e poi generare l'exe.
    https://www.youtube.com/watch?v=3wZ7GRbr91g&ab_channel=FaniloAndrianasolo

    Non è il massimo della velocità però funziona e nel pc del destinatario non devi installare nulla di nulla.

    Fatemi sapere se potevo o meno postare questo link.
    Altrimenti modifico e lo cancello.
    Grazie

  • Re: Rilascio solo exe al cliente di uno script python/streamlit senza .py

    Io lascerei perdere “npm” visto che e' un tool per JavaScript e NON per Python.

    Certo, si puo' fare, MA per questo, si puo' fare ANCHE usando OGNI ALTRO TOOL esistente sulla faccia della terra! 
    Anche con “make” o CMake" (C++) o “sbt” (Scala) o “Groovy”, o “Ant”, o “Maven” (java"), …

    Per EVITARE inutili “impasticciamenti”, conviene rimanere nell'ambito dei tool SPECIFICI per Python, senza cercare soluzioni “inutilmente arzigogolate” anche SE SEMBRANO piu' facili! 
    Poi, invece di avere “problemi” SOLO con Python, ti trovi ad avere problemi ANCHE con “npm”, “Node.js”, “Electron” (altro tool che si porta dietro) e chissa' che altro …

    Fare le cose in modo “facile” non necessariamente e' sempre “semplice” ;-)

  • Re: Rilascio solo exe al cliente di uno script python/streamlit senza .py

    01/04/2024 - migliorabile ha scritto:


    Io lascerei perdere “npm” visto che e' un tool per JavaScript e NON per Python.

    Certo, si puo' fare, MA per questo, si puo' fare ANCHE usando OGNI ALTRO TOOL esistente sulla faccia della terra! 
    Anche con “make” o CMake" (C++) o “sbt” (Scala) o “Groovy”, o “Ant”, o “Maven” (java"), …

    Per EVITARE inutili “impasticciamenti”, conviene rimanere nell'ambito dei tool SPECIFICI per Python, senza cercare soluzioni “inutilmente arzigogolate” anche SE SEMBRANO piu' facili! 
    Poi, invece di avere “problemi” SOLO con Python, ti trovi ad avere problemi ANCHE con “npm”, “Node.js”, “Electron” (altro tool che si porta dietro) e chissa' che altro …

    Fare le cose in modo “facile” non necessariamente e' sempre “semplice” ;-)

    E sono d'accordo con te. E allora quale tool di Python usare ? Con pyinstaller non sto riuscendo a fare quello che voglio. Grazie :-)

  • Re: Rilascio solo exe al cliente di uno script python/streamlit senza .py

    Purtroppo i problemi sono' “a monte”, cioe' e' stata sbagliata la scelta di Python e voler distribuire un exe. 

    SE il problema e' consegnare un software SENZA i sorgenti, bisogna usare un linguaggio di programmazione COMPILATO, NON uno INTERPRETATO. 

    Esistono TANTI linguaggi di programmazione compilati: C, C++, C#, Java, Scala, Julia, D, Rust, Zig, Nim, Haskell, Erlang,…

    I teoria esiste MOJO, un compilatore Python, ma e' ancora ‘acerbo’ 

    Comunque, a ‘stima’, direi che dovrebbe essere possibile fare quello che ti serve rimanendo in ambito Python, c'e' solo da capire come.

    Io uso Python (ma lo uso in modo ‘strettamente’ convenzionale, con tanto di creazione di pacchetti installabili con pip) e mi sono letto che cosa e' strimlit. La domanda sorge spontanea: ma ti serve PROPRIO streamlit o lo hai usato SOLO perche' fa interfacce ‘carine’? Forse ti può bastare tkinter.

    Non e' mai una buona idea forzare una tecnologia al di fuori del suo ‘naturale' ambito di utilizzo. A meno di non sapere ESATTAMENTE che cosa si sta facendo. 

  • Re: Rilascio solo exe al cliente di uno script python/streamlit senza .py

    05/04/2024 - migliorabile ha scritto:


    Purtroppo i problemi sono' “a monte”, cioe' e' stata sbagliata la scelta di Python e voler distribuire un exe. 

    SE il problema e' consegnare un software SENZA i sorgenti, bisogna usare un linguaggio di programmazione COMPILATO, NON uno INTERPRETATO. 

    Esistono TANTI linguaggi di programmazione compilati: C, C++, C#, Java, Scala, Julia, D, Rust, Zig, Nim, Haskell, Erlang,…

    I teoria esiste MOJO, un compilatore Python, ma e' ancora ‘acerbo’ 

    Comunque, a ‘stima’, direi che dovrebbe essere possibile fare quello che ti serve rimanendo in ambito Python, c'e' solo da capire come.

    Io uso Python (ma lo uso in modo ‘strettamente’ convenzionale, con tanto di creazione di pacchetti installabili con pip) e mi sono letto che cosa e' strimlit. La domanda sorge spontanea: ma ti serve PROPRIO streamlit o lo hai usato SOLO perche' fa interfacce ‘carine’? Forse ti può bastare tkinter.

    Non e' mai una buona idea forzare una tecnologia al di fuori del suo ‘naturale' ambito di utilizzo. A meno di non sapere ESATTAMENTE che cosa si sta facendo. 

    Ciao migliorabile, negli ultimi anni sto usando Visual Studio / C# (compilato) e ovviamente non ho problemi per la distribuzione degli exe.

    Per questo progetto la scelta di Python (interpetato) è stata fatta per poter utilizzare uno specifico framework di AI. 

    Microsoft era un pò indietro qualche mese fa e quindi ho scelto questa strada ed ho usato Streamlit in quanto proposto dal framework e ritenuto “carino” :-).

    Certo, posso rivedere la scelta dell'interfaccia grafica e provarne altre (tipo quella che mi consigli ) devo però rifarla e preferirei evitarlo.

    Certo non si può avere tutto dalla vita.

    Ho letto in giro che molti hanno il mio problema con Streamlit e cercano una soluzione, speravo che qualcuno l'avesse trovata.

    Grazie per il contributo.

  • Re: Rilascio solo exe al cliente di uno script python/streamlit senza .py

    05/04/2024 - loky62 ha scritto:


    Certo, posso rivedere la scelta dell'interfaccia grafica e provarne altre (tipo quella che mi consigli ) devo però rifarla e preferirei evitarlo.

    Non so quanto sia complessa l'interfaccia grafica che hai realizzato, ad ogni modo mi sono trovato nella tua situazione di dover impiegare librerie Python (ed è una necessità sempre più frequente) con un ambiente di sviluppo che uso quotidianamente, ossia Delphi, che tra le tante cose che fa, è particolarmente efficace e produttivo nella creazione di interfacce grafiche e gode da diversi anni di una integrazione molto stretta con Python, perché fornisce a Delphi - linguaggio compilato e tipizzato - quella parte di “dinamicità” che manca.

    Utilizzando Delphi, puoi creare eseguibili nativi (exe per Windows, ma anche eseguibili per Mac, iOS, Android, Linux) con una interfaccia utente dotata di tutti i crismi, e grazie alle librerie Python4Delphi integrare all'interno del programma gli script che intendi eseguire, rilasciandoli senza il bisogno di aggiungere altre dipendenze (è possibile anche integrare l'intero motore di Python all'occorrenza, nel caso serva).

    Se vuoi approfondire, trovi maggiori informazioni per usare Py4D in questa pagina, mentre puoi scaricare la Community Edition di Delphi dal sito ufficiale (è gratuita).

    Magari è una opzione che non hai preso in considerazione e potrebbe permetterti di unire una interfaccia utente gradevole, ma performante e indipendente, ai tuoi script Python, senza sacrificare troppo tempo (l'apprendimento è morbido) e con diverse possibilità ulteriori (che magari non ti interessano oggi, ma un domani chissà…) legate al crossplatform e ad altre tecnologie.

  • Re: Rilascio solo exe al cliente di uno script python/streamlit senza .py

    05/04/2024 - Alka ha scritto:


    05/04/2024 - loky62 ha scritto:


    Certo, posso rivedere la scelta dell'interfaccia grafica e provarne altre (tipo quella che mi consigli ) devo però rifarla e preferirei evitarlo.

    Non so quanto sia complessa l'interfaccia grafica che hai realizzato, ad ogni modo mi sono trovato nella tua situazione di dover impiegare librerie Python (ed è una necessità sempre più frequente) con un ambiente di sviluppo che uso quotidianamente, ossia Delphi, che tra le tante cose che fa, è particolarmente efficace e produttivo nella creazione di interfacce grafiche e gode da diversi anni di una integrazione molto stretta con Python, perché fornisce a Delphi - linguaggio compilato e tipizzato - quella parte di “dinamicità” che manca.

    Utilizzando Delphi, puoi creare eseguibili nativi (exe per Windows, ma anche eseguibili per Mac, iOS, Android, Linux) con una interfaccia utente dotata di tutti i crismi, e grazie alle librerie Python4Delphi integrare all'interno del programma gli script che intendi eseguire, rilasciandoli senza il bisogno di aggiungere altre dipendenze (è possibile anche integrare l'intero motore di Python all'occorrenza, nel caso serva).

    Se vuoi approfondire, trovi maggiori informazioni per usare Py4D in questa pagina, mentre puoi scaricare la Community Edition di Delphi dal sito ufficiale (è gratuita).

    Magari è una opzione che non hai preso in considerazione e potrebbe permetterti di unire una interfaccia utente gradevole, ma performante e indipendente, ai tuoi script Python, senza sacrificare troppo tempo (l'apprendimento è morbido) e con diverse possibilità ulteriori (che magari non ti interessano oggi, ma un domani chissà…) legate al crossplatform e ad altre tecnologie.

    Ma no, l'interfaccia non è particolarmente complessa, grazie del tuo contributo.

  • Re: Rilascio solo exe al cliente di uno script python/streamlit senza .py

    06/04/2024 - loky62 ha scritto:


    Ma no, l'interfaccia non è particolarmente complessa

    A maggior ragione… :)

Devi accedere o registrarti per scrivere nel forum
8 risposte