Non sono soddisfatto del modo in cui attualmente distribuisco il codice Python e mi chiedevo se c'è un modo migliore. Per prima cosa spiegherò cosa sto facendo, quindi gli svantaggi:Come distribuire e distribuire il codice Python 3 con isolamento delle dipendenze
- Quando sviluppo, utilizzo virtualenv per isolare le dipendenze e installare tutte le librerie tramite pip. Lo stesso Python proviene dal mio sistema operativo (Ubuntu)
- Poi ho creato il mio codice in un pacchetto debian ".deb" costituito dal mio albero di origine e un bundle di pip delle mie dipendenze
- Poi quando lo distribuisco, ricostruisco l'ambiente virtualenv , fonte foo/bin/attivare e quindi eseguire il mio programma (sotto il parvenu di Ubuntu)
Qui ci sono i problemi:
- il bundle pip è abbastanza grande e aumenta la dimensione del pacchetto Debian in modo significativo. Questo non è un grosso problema, ma è fastidioso.
- Devo compilare tutte le librerie C (PyMongo, BCrypt, ecc.) Ogni volta che viene distribuito. Questo richiede un po 'di tempo (pochi minuti) ed è un po' inconsistente per fare questo lavoro CPU bound sulla produzione
qui sono i miei vincoli:
- deve lavorare su Python 3. Preferibilmente 3.2
- Deve avere isolamento dipendenza
- deve lavorare con le librerie che utilizzano C (come PyMongo)
ho sentito cose su di congelamento, ma non ho ape n in grado di farlo funzionare. cx_freeze di Pypi non sembra compilare (almeno sul mio Python). Le altre utilità di freeze non sembrano funzionare con Python 3. Come posso fare meglio?
Questo è automatizzato - l'automazione non è un mio problema. Il mio problema è che è lento e richiede la compilazione in produzione –
Hai guardato il pacchetto di distribuzione "ruota"? – sureshvv
Wheel è ora in un punto in cui è utile per questo tipo di problema –