python - pip3 - Perché usare pip su easy_install?




python easy_install vs pip (6)

Un tweet recita:

Non usare easy_install, a meno che non ti piaccia pugnalarti in faccia. Usa pip.

Perché usare pip su easy_install? La colpa non è forse per PyPI e gli autori dei pacchetti ? Se un autore carica il tarball sorgente di crap (ad es .: file mancanti, nessun setup.py) in PyPI, allora sia pip che easy_install falliranno. A parte le differenze estetiche, perché le persone Python (come nel tweet sopra) sembrano favorire fortemente pip su easy_install?

(Supponiamo che stiamo parlando di easy_install dal pacchetto Distribute, gestito dalla comunità)


AGGIORNAMENTO: setuptools ha assorbito distribute in opposizione al contrario, come alcuni hanno pensato. setuptools è aggiornato con le ultime modifiche delle distutils e il formato della ruota. Quindi, easy_install e pip sono più o meno allo stesso livello.

Fonte: absorbed


Dalla presentazione di Ian Bicking a pip :

pip è stato originariamente scritto per migliorare su easy_install nei seguenti modi

  • Tutti i pacchetti vengono scaricati prima dell'installazione. Di conseguenza, l'installazione parzialmente completata non si verifica.
  • Si presta attenzione per presentare l'output utile sulla console.
  • Le ragioni per le azioni sono tenute traccia di. Ad esempio, se viene installato un pacchetto, pip tiene traccia del motivo per cui quel pacchetto è stato richiesto.
  • I messaggi di errore dovrebbero essere utili.
  • Il codice è relativamente conciso e coeso, rendendo più facile l'utilizzo programmatico.
  • I pacchetti non devono essere installati come archivi di uova, possono essere installati piatti (mantenendo i metadati dell'uovo).
  • Supporto nativo per altri sistemi di controllo versione (Git, Mercurial e Bazaar)
  • Disinstallazione di pacchetti.
  • Semplice da definire serie fisse di requisiti e riprodurre in modo affidabile un insieme di pacchetti.

File REQUISITI.

Seriamente, lo uso in collaborazione con virtualenv ogni giorno.

TUTORIAL DI GESTIONE DELLE DIPENDENZE RAPIDE, FOLLA

I file dei requisiti consentono di creare un'istantanea di tutti i pacchetti che sono stati installati tramite pip. Incapsulando tali pacchetti in un ambiente virtuale, è possibile fare in modo che il codice base funzioni su un insieme di pacchetti molto specifico e condivida tale base di codice con altri.

Dalla documentazione di Heroku https://devcenter.heroku.com/articles/python

Si crea un ambiente virtuale e si imposta la shell per usarlo. (istruzioni bash / * nix)

virtualenv env
source env/bin/activate

Ora tutti gli script Python eseguiti con questa shell useranno i pacchetti e la configurazione di questo ambiente. Ora è possibile installare un pacchetto localmente in questo ambiente senza la necessità di installarlo globalmente sul proprio computer.

pip install flask

Ora puoi scaricare le informazioni su quali pacchetti sono installati

pip freeze > requirements.txt

Se hai controllato il file nel controllo di versione, quando qualcun altro riceve il tuo codice, possono impostare il proprio ambiente virtuale e installare tutte le dipendenze con:

pip install -r requirements.txt

Ogni volta che puoi automatizzare il tedio in questo modo è fantastico.


Ho appena incontrato un caso speciale che ho dovuto usare easy_install posto di pip , o devo tirare direttamente i codici sorgente.

Per il pacchetto GitPython , la versione in pip è troppo vecchia, che è 0.1.7 , mentre quella di easy_install è l'ultima che è 0.3.2.rc1 .

Sto usando Python 2.7.8 . Non sono sicuro del meccanismo di underlay di easy_install e pip , ma almeno le versioni di alcuni pacchetti potrebbero essere diverse l'una dall'altra e, a volte, easy_install è quella con la versione più recente.

easy_install GitPython

Molte delle risposte qui non sono aggiornate per il 2015 (sebbene l'iniziale accettato da Daniel Roseman non lo sia). Ecco lo stato attuale delle cose:

  • I pacchetti binari sono ora distribuiti come ruote (file .whl ) -non solo su PyPI, ma in repository di terze parti come i Pacchetti di estensioni di Christoph Gohlke per Windows . pip può gestire ruote; easy_install non può.
  • Gli ambienti virtuali (che sono integrati con 3.4 o possono essere aggiunti a 2.6 + / 3.1 + con virtualenv ) sono diventati uno strumento molto importante e importante (e raccomandato nei documenti ufficiali ); includono il pip out of the box, ma non funzionano nemmeno correttamente con easy_install .
  • Il pacchetto di distribute che include easy_install non viene più gestito. I suoi miglioramenti rispetto a setuptools stati riuniti in setuptools . Cercando di installare distribute sarà sufficiente installare setuptools invece.
  • easy_install stesso è solo quasi mantenuto.
  • Tutti i casi in cui i pip erano inferiori a easy_install -installing da un albero di sorgenti decompresso, da un repository DVCS, ecc. Sono ormai lontani; puoi pip install . , pip install git+https:// .
  • pip viene fornito con i pacchetti ufficiali Python 2.7 e 3.4+ da python.org e un bootstrap di pip è incluso di default se si costruisce da sorgente.
  • I vari frammenti incompleti di documentazione sull'installazione, l'utilizzo e la creazione di pacchetti sono stati sostituiti dalla Guida dell'utente di Python Packaging . La documentazione di Python sull'installazione dei moduli Python ora rimanda a questa guida dell'utente e richiama esplicitamente pip come "il programma di installazione preferito".
  • Altre nuove funzionalità sono state aggiunte a pip nel corso degli anni che non saranno mai disponibili in easy_install . Ad esempio, pip semplifica la clonazione dei pacchetti del sito creando un file dei requisiti e quindi installandolo con un singolo comando su ciascun lato. O per convertire il file dei requisiti in un repository locale da utilizzare per lo sviluppo interno. E così via.

L'unica buona ragione per cui so di usare easy_install nel 2015 è il caso particolare di usare le versioni preinstallate di Apple di Apple con OS X 10.5-10.8. Dal 10.5, Apple ha incluso easy_install , ma a partire da 10.10 non includono ancora pip . Con 10.9+, dovresti comunque usare semplicemente get-pip.py , ma per 10.5-10.8, questo ha alcuni problemi, quindi è più facile sudo easy_install pip . (In generale, easy_install pip è una cattiva idea, è solo per OS X 10.5-10.8 che vuoi fare questo.) Inoltre, 10.5-10.8 include readline in un modo che easy_install sa come spostarsi ma pip no, quindi vuoi anche sudo easy_install readline se vuoi aggiornarlo.


Un altro motivo, ancora non menzionato, per favorire il pip è perché è la nuova hotness e continuerà ad essere utilizzato in futuro.

L'infografica qui sotto - dalla sezione Stato attuale del packaging nella Guida all'automobilista v1.0 - mostra che setuptools / easy_install andrà via in futuro.

Ecco un'altra infografica dalla documentazione di distribuzione che mostra che Setuptools e Setuptools saranno sostituiti dal nuovo hotness- distribution e pip . Mentre pip è ancora la nuova hotness, Distribute si è fusa con Setuptools nel 2013 con il rilascio di Setuptools .





pypi