9

Ero uno sviluppatore Java e usavamo strumenti come ant o maven per gestire gli ambienti di sviluppo/test/UAT in modo standardizzato. Questo ci ha permesso di gestire le dipendenze della libreria, l'impostazione delle variabili del sistema operativo, la compilazione, la distribuzione, l'esecuzione dei test unitari e tutte le attività richieste. Inoltre, gli script generati garantivano che tutti gli ambienti erano configurati quasi allo stesso modo e tutte le attività venivano eseguite allo stesso modo da tutti i membri del team.Strumento (o combinazione di strumenti) per ambienti riproducibili in Python

Ora sto iniziando a lavorare in Python e mi piacerebbe il vostro consiglio su quali strumenti dovrei usare per realizzare lo stesso come descritto per java.

risposta

18
  1. virtualenv per creare un ambiente virtuale contenuta (prevenire diverse versioni dei pacchetti Python o Python a botte con l'altro). C'è un crescente ronzio dalle persone che si spostano su questo strumento. L'autore è uguale al vecchio working-env.py citato da Aaron.

  2. pip per installare pacchetti all'interno di un virtualenv. Il tradizionale è easy_install come risponde da S. Lott, ma pip funziona meglio con virtualenv. easy_install ha ancora caratteristiche non trovate in pip però.

  3. scons come strumento di compilazione, sebbene non sia necessario questo se si rimane puramente Python.

  4. Fabric incolla o paver per la distribuzione.

  5. buildbot per integrazione continua.

  6. Bazaar, mercuriale o git per controllo versione.

  7. Nose come estensione per il test dell'unità.

  8. PyFit per prova FIT.

+0

+1 virtualenv. Inoltre, usa virtualenvwrapper. – hughdbrown

2

diverso da easy_install?

Per i nostri server Linux, utilizziamo easy_install e yum.

Per i nostri laptop di sviluppo Windows, utilizziamo easy_install e alcuni MSI per alcuni progetti.

La maggior parte delle librerie Python che usiamo sono di sola origine, quindi possiamo usare la stessa distribuzione su tutte le scatole. Se potessimo avere un dispositivo condiviso di rete, li metteremmo tutti lì. Purtroppo, la nostra infrastruttura è un po 'sparpagliata, quindi dobbiamo spostare i file .TAR in giro o ripetere le installazioni per ricostruire gli ambienti.

In alcuni casi (ad esempio, PIL), dobbiamo ricompilare e controllare i numeri di versione.

2

Si desidera che easy_setup ottenga le uova (approssimativamente ciò che Maven chiama un artefatto).

Per impostare il vostro ambiente, uno sguardo ai working-env.py

Python non viene compilato, ma si può mettere tutti i file di un progetto in un uovo. Questo è fatto con setuptools

Per CI, controllare this answer.

0

Faccio esattamente questo con una combinazione di setuptools e Hudson. So che Hudson è un'app java, ma può eseguire cose di Python bene.

2

Saremmo negligente per non parlare anche Paver, che è stato creato da Kevin Dangoor di TurboGears fama. Il progetto è ancora in alpha, ma sembra molto promettente. Uno snippet dalla pagina del progetto:

Paver è uno strumento di creazione/distribuzione/distribuzione basato su Python lungo le linee di Make or Rake. Ciò che rende unico Paver è la sua integrazione con le librerie Python comunemente usate. Le attività comuni che erano facili prima rimangono facili. Ancora più importante, gestire le esigenze e i requisiti specifici delle applicazioni è ora molto più semplice.

0

Si potrebbe voler controllare il nostro Devenv. Ti consente di standardizzare gli ambienti di sviluppo per lo sviluppo, QA e UAT. È gratuito come nella "birra gratis".

HTH

Problemi correlati