2009-10-29 11 views
17

Presto lancio un beta app e questo ha la possibilità di creare script di integrazione personalizzati su Python.Come distribuire Python agli utenti di Windows?

L'app sarà indirizzata a Mac OS X e Windows e il mio problema riguarda Windows in cui Python normalmente non è presente.

Il mio attuale aproach esegue silenziosamente l'installazione di Python 2.6. Tuttavia, devo affrontare il problema che non è attivato per impostazione predefinita e il percorso non è impostato quando si utilizza command line options. E temo che se Python fosse già installato e io aggiornassi ad una nuova versione questo potrebbe rompere qualcos'altro ...

Quindi, mi chiedo come questo possa essere fatto in modo pulito. Va bene se copio l'intera directory Python 2.6 e la metto in una sottodirectory della mia app e installo tutto lì? Oppure con virtualenv è possibile eseguire versioni differenti di Python (se Python è già installato nella macchina?).

Ho anche giocato prima di incorporare Python con una DLL e l'ho trovato facile ma ho perso la possibilità di eseguire il debug, quindi passo ai plug-in della riga di comando.

Eseguo i plug-in dalla riga di comando e leggere l'output STDOUT e STDERR. L'app è fatta con Delphi/Lazarus. Installo altri moduli come client JSON e RPC, Win32com, ORM, ecc. Creo l'installer con bitrock.

AGGIORNAMENTO: Gli utenti finali sono proprietari di piccole imprese e gli script Python sono realizzati dagli sviluppatori. Voglio evitare qualsiasi passaggio aggiuntivo nella distribuzione, quindi voglio una configurazione completamente integrata.

+1

Cosa c'è di sbagliato in una riga del README dell'applicazione che dice: scarica e installa Python 2.6? Cosa c'è di sbagliato nel creare un MSI in due parti in cui MSI installa il MSI Python? –

+2

Perché voglio un'esperienza di installazione regolare;). Ho già la configurazione a 2 parti. Il python msi viene installato ma non viene attivato o modificato il percorso. Inoltre, affronto la situazione in cui è già installata un'altra versione di python. – mamcx

+1

Perché l'utente finale è di piccole dimensioni. Gli script Python sono realizzati dagli sviluppatori. Avere un altro passo da compiere è una barriera nella distribuzione e voglio evitarlo (è come il problema con .net e java) – mamcx

risposta

13

Copia una cartella Portable Python dal tuo programma di installazione, nella stessa cartella dell'applicazione Delphi/Lazarus. Imposta tutti i percorsi in modo appropriato per quello.

+0

Finalmente faccio qualcosa di simile, copyng la cartella python completa come una sottocartella con tutti i moduli preinstaled, quindi vi indichi il percorso – mamcx

+0

È sorprendente la frequenza con cui la "cosa più semplice che potrebbe funzionare" risulta essere una strategia praticabile. –

11

Si potrebbe provare a utilizzare py2exe. Crea un file .exe con Python già incluso!

+0

Questo non funziona per me, perché è una parte importante del prodotto la possibilità di creare plugin in python.Pensa come se la mia app fosse apache e chiunque potesse costruire il proprio sito web in python o php. – mamcx

4

Integrare l'interprete Python nell'app Delphi con P4D. Questi componenti funzionano davvero, e in entrambe le direzioni (classi di Delphi esposte a Python come estensioni binarie e interprete Python all'interno di Delphi). Ho anche visto una patch per la compatibilità di Lazarus nella pagina "Problemi" del codice Google, ma sembra che potrebbero esserci alcuni problemi irrisolti.

1

Penso che non ci siano problemi nel combinare il packaging .EXE con uno strumento come PyInstaller o py2exe e plugin scritti con Python. L'exe creato può facilmente rilevare dove è installato e il codice all'interno può quindi semplicemente i file import da qualche directory di plugin predeterminata. Non dimenticarti che una volta che impacchettate uno script Python in un eseguibile, esso impacchetta anche l'interprete Python all'interno, quindi ce l'avete - un ambiente Python completo personalizzato con il vostro codice personale.

+0

Sì ... tranne che lo stesso strumento sarà disponibile su osx e linux. Quindi, il modo migliore e più semplice è spedire file .py. – mamcx

+0

Non capisco il contesto del commento, mamcx. Puoi sicuramente usare py2exe per tutte le piattaforme, e i plugin .py non devono essere modificati. –

+0

Secondo il sito web di py2exe è solo per Windows ... o mi manca qualcosa? – mamcx