Differenza tra 'python setup.py install' e 'pip install'


105

Ho un pacchetto esterno che voglio installare nel mio python virtualenv da un file tar. Qual è il modo migliore per installare il pacchetto?

Ho scoperto 2 modi per farlo:

  1. Estrai il file tar, quindi esegui python setup.py installall'interno della directory estratta.
  2. pip install packagename.tar.gzdall'esempio n. 7 in https://pip.pypa.io/en/stable/reference/pip_install/#examples

È se c'è qualche differenza nel farli in questi 2 modi.


5
Usa pip. Puoi disinstallare i pacchetti con esso.
Blender

"From source" come in "VCS checkout", o come in sdist?

Ciò che è "migliore" dipende dalle tue esigenze! Hai provato una di queste soluzioni e hai fallito in qualche modo? O stai chiedendo quale sia la differenza è tra questi approcci?
Martin Atkins

Su fedora, ad esempio, usando yum.
perreal

Risposte:


109

In superficie, entrambi fanno la stessa cosa: facendo python setup.py installo pip install <PACKAGE-NAME>installerai il tuo pacchetto python per te, con un minimo di confusione.

Tuttavia, l'utilizzo di pip offre alcuni vantaggi aggiuntivi che lo rendono molto più piacevole da usare.

  • pip scaricherà automaticamente tutte le dipendenze per un pacchetto per te. Al contrario, se si utilizza setup.py, spesso è necessario cercare e scaricare manualmente le dipendenze, il che è noioso e può diventare frustrante.
  • pip tiene traccia di vari metadati che ti consentono di disinstallare e aggiornare facilmente i pacchetti con un singolo comando: pip uninstall <PACKAGE-NAME>e pip install --upgrade <PACKAGE-NAME>. Al contrario, se si installa un pacchetto utilizzando setup.py, è necessario eliminare e gestire manualmente un pacchetto se si desidera eliminarlo, il che potrebbe essere potenzialmente soggetto a errori.
  • Non è più necessario scaricare manualmente i file. Se si utilizza setup.py, è necessario visitare il sito Web della libreria, capire dove scaricarlo, estrarre il file, eseguire setup.py... Al contrario, pip cercherà automaticamente l' indice dei pacchetti Python (PyPi) per vedere se il pacchetto esiste lì, e scaricherà, estrarrà e installerà automaticamente il pacchetto per te. Con poche eccezioni, quasi ogni singola libreria Python veramente utile può essere trovata su PyPi.
  • pip ti permetterà di installare facilmente le ruote, che è il nuovo standard della distribuzione Python. Maggiori informazioni sulle ruote .
  • pip offre ulteriori vantaggi che si integrano bene con l'utilizzo virtualenv, che è un programma che consente di eseguire più progetti che richiedono librerie in conflitto e versioni Python sul tuo computer. Maggiori info .
  • pip è in bundle per impostazione predefinita con Python a partire da Python 2.7.9 sulla serie Python 2.x e da Python 3.4.0 sulla serie Python 3.x, rendendolo ancora più facile da usare.

Quindi, fondamentalmente, usa pip. Offre solo miglioramenti rispetto all'utilizzo python setup.py install.


Se stai utilizzando una versione precedente di Python, non riesci ad aggiornare e non hai pip installato, puoi trovare ulteriori informazioni sull'installazione di pip ai seguenti collegamenti:

pip, di per sé, non richiede davvero un tutorial. Il 90% delle volte, l'unico comando di cui hai veramente bisogno è pip install <PACKAGE-NAME>. Detto questo, se sei interessato a saperne di più sui dettagli di cosa puoi fare esattamente con pip, vedi:

Si consiglia inoltre comunemente di utilizzare pip e virtualenv insieme. Se sei un principiante di Python, personalmente penso che sarebbe bello iniziare usando solo pip e installare pacchetti a livello globale, ma alla fine penso che dovresti passare all'uso di virtualenv mentre affronti progetti più seri.

Se desideri saperne di più sull'utilizzo di pip e virtualenv insieme, vedi:


1
Pip installa internamente chiama il file setup.py?
variabile

@variable, pip install from "wheels", pre-compiled packages, no, pip install from source does: see pip install build build system interface
denis

Nella mia esperienza, python setup.py installscarica e installa anche le dipendenze. È un cambiamento da quando hai scritto questa risposta nel 2013?
Ken Williams,

19

python setup.py installè l'analogo di make install: è un modo limitato per compilare e copiare file nelle directory di destinazione. Questo non significa che sia il modo migliore per installare davvero il software sul tuo sistema.

pipè un gestore di pacchetti, che può installare, aggiornare, elencare e disinstallare pacchetti, come familiari gestori di pacchetti tra cui: dpkg, apt, yum, urpmi, portsecc. Sotto il cofano, verrà eseguito python setup.py install, ma con opzioni specifiche per controllare come e dove le cose vanno installate.

In sintesi: utilizzare pip.


2

La domanda riguarda il metodo preferito per installare un tarball locale contenente un pacchetto python, NON il vantaggio di caricare il pacchetto su un servizio di indicizzazione come PyPi.

Per quanto ne so, alcuni distributori di software non caricano il loro pacchetto su PyPi, chiedendo invece agli sviluppatori di scaricare il pacchetto dal loro sito Web e installarlo.

installazione di python setup.py

Questo può funzionare ma non è consigliato. Non è necessario scartare il file tarball e accedervi per eseguire il file setup.py.

pip install ../path/to/packagename.tar.gz

Questo è il modo progettato e preferito. Conciso e allineato con i pacchetti in stile PyPi.

Ulteriori informazioni su pip installpossono essere trovate qui: https://pip.readthedocs.io/en/stable/reference/pip_install/


Possiamo usare pip install -e?
variabile
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.