2009-06-23 8 views
14

Il modo più semplice di gestire le installazioni di pacchetti Python, finora, è stato controllare l'origine dal sistema di controllo sorgente e quindi aggiungere un collegamento simbolico nel python dist cartella dei pacchetti.Installazione del pacchetto Python usando pip o easy_install da repos

Chiaramente dal momento che il controllo del codice sorgente fornisce il controllo completo per il downgrade, l'aggiornamento a qualsiasi ramo, tag, funziona molto bene.

C'è un modo per utilizzare uno dei programmi di installazione del pacchetto (easy_install o pip o altro), si può ottenere lo stesso.

easy_install ottiene il tar.gz e li installa utilizzando l'installazione setup.py che si installa nella cartella dist-packages in python2.6. C'è un modo per configurarlo, o pip per usare il sistema di controllo della versione sorgente (SVN/GIT/Hg/Bzr).

risposta

26

Utilizzando pip questo è abbastanza facile. Per esempio:

pip install -e hg+http://bitbucket.org/andrewgodwin/south/#egg=South 

PIP clonare automaticamente il repo fonte ed eseguire "setup.py sviluppare" per voi per installare nel vostro ambiente (che si spera è un virtualenv). Git, Subversion, Bazaar e Mercurial sono tutti supportati.

È inoltre possibile eseguire "pip freeze" e verrà generato un elenco dei pacchetti attualmente installati con le loro esatte versioni (incluso, per le installazioni di sviluppo, la revisione esatta da VCS).È possibile inserirlo direttamente in un file di requisiti e successivamente eseguire

pip install -r requirements.txt 

per installare lo stesso set di pacchetti alle stesse identiche versioni.

+0

Infatti attualmente utilizzo il trunk pip, che viene fornito con uninstall, che hai scritto. –

+0

Grande. Sì, ho pensato che tu avessi tutto sotto controllo, ma volevo assicurarmi che questa risposta fosse disponibile a chiunque incontrasse la domanda. –

11

Se si scarica o si verifica la distribuzione di origine di un pacchetto - quello che ha il suo "setup.py" all'interno di esso - allora se il pacchetto è basato su "setuptools" (che alimenta anche easy_install), si può muoversi in quella directory e dire:

$ python setup.py develop 

e creerà i collegamenti simbolici giuste dist-packages in modo che i file .py nella distribuzione sorgente sono quelli che vengono importati, invece di copie installate separatamente (che è ciò che farebbe "setup.py install" - crea copie separate che non cambiano immediatamente quando si modifica il codice sorgente per provare una modifica).

Come l'altra risposta indica, si dovrebbe provare a leggere la documentazione "setuptools" per saperne di più. "setup.py develop" è una funzionalità davvero utile! Provare a utilizzare in combinazione con un virtualenv, e si può "setup.py sviluppare" indolore e senza rovinare il tuo Python a livello di sistema con i pacchetti che si sta solo in via di sviluppo in temporaneamente:

http://pypi.python.org/pypi/virtualenv 
+2

+1: virtualenv è essenziale quando si esegue lo sviluppo di python – codeape

+0

virtualenv è essenziale <3 –

+3

Si noti inoltre che "pip install -e". è equivalente a "python setup.py develop", eccetto il fatto che funziona anche con pacchetti che non usano setuptools nel loro setup.py (perché pip lo obbliga a usarlo comunque;>) –

4

easy_install ha il supporto per il download di specifiche versioni. Ad esempio:

easy_install python-dateutil==1.4.0 

Installerà v1.4, mentre l'ultima versione 1.4.1 verrà selezionata se non è stata specificata alcuna versione.

C'è anche il supporto per le casse svn, ma usando che non ti dà molto benefici dalla vostra versione manuale. Vedere il manuale per maggiori informazioni sopra.

Essere in grado di passare a rami specifici è raramente utile a meno che non si stiano sviluppando i pacchetti in questione e quindi in genere non è una buona idea installarli comunque nei pacchetti del sito.

+0

se non fosse python-dateutil = = 1.4.0 (doppio uguale)? – typeoneerror

+0

sì, dovrebbe. L'ho riparato. –

0

easy_install accetta anche un URL per l'albero dei sorgenti. Funziona almeno quando i sorgenti sono in Subversion.