Utilizzo di pip vs. MacPorts per l'installazione di pacchetti Python


12

Potrei installare un pacchetto python ( per esempio , numpy) sul mio Mac sia via MacPorts:

port install py-numpy

o tramite pip:

pip install numpy

Quali sono i pro / contro generali di ciascun approccio? Quando dovrebbe essere usato ogni approccio?

  • Quando dovrei preferire l'uno all'altro?
  • Importa se il pacchetto che sto installando è piccolo o grande (ad es. numpy)?
  • Dipende dalla versione di Python che sto usando ( 2.xvs. 3.x, o Apple pythonvs. MacPort's python)?
  • Ha importanza se pythonsul mio Mac sono installate più versioni di ?
  • Possono essere usati contemporaneamente?

Spero in una risposta che abbia un breve elenco di alcuni pro / contro di ogni approccio con alcune discussioni su quando scegliere uno rispetto all'altro.


Correlato, ma troppo specifico: stackoverflow.com/questions/16895282/… . Sto chiedendo pacchetti python generali anziché solo matplotlib.
jvriesem,

AFAIK questi sono già installati - puoi controllare nel terminale:> python e il comando successivo> importa numpy come np e se non ci sono errori, allora ce l'hai. La soluzione alternativa è quella di utilizzare anaconda da continuum.io/downloads - ha molte funzionalità e ulteriori installazioni con pip andranno nella tua cartella anaconda.
Yoan,

@Yoan: numpyè solo un esempio. Sto chiedendo l'installazione dei pacchetti in generale.
jvriesem,

Risposte:


3

Possono essere usati contemporaneamente e non dovrebbero esserci problemi tra la miscelazione dei due (con un tipo di avvertimento e un gotcha ...)

The Caveat

L'avvertenza è che macports / homebrew e pip non avranno la consapevolezza che ciascuno di essi sia installato rispetto all'altro.

Ad esempio, supponiamo che tu installi python 3.6 sul tuo Mac. Volete nltk, che non è tecnicamente disponibile per quella versione su Macports, ma è su pip. Quindi installi su pip. Due mesi dopo, vedi che è installato su Macports e scegli di installarlo. Ora hai due diverse versioni di nltksul tuo computer, quindi fai attenzione .

Il Gotcha

Se usi pip con Macports, devi assicurarti che sia il pip che viene installato tramite Macports e associato a quella versione di Python. Quindi, per esempio, vedrai un py35-pip, un py36-pip, ecc.

Una volta installato il pip corretto, si utilizza il selectcomando di Macports per assicurarsi che sia attivato con la versione appropriata di Python:

sudo port select

La mia esperienza è che installare moduli nell'area globale di Python creata da MacPorts provoca conflitti. Prima o poi, MacPorts proverà ad installare una porta che hai già installato da pip. Emetterà un messaggio di errore relativo alla presenza di un file in quella porta ma non installato da MacPorts. Penso che la risposta di @ IanC sia migliore: installa nell'area Python globale usando solo MacPorts, installa all'interno di ambienti virtuali usando solo pip.
Jim DeLaHunt,

4

Dovresti usarlo pipperché è lo strumento nativo di Python per la gestione delle installazioni di pacchetti, ma non dovresti installare di pip cose nella tua installazione di base di Python. Può essere un disordine dover sistemare le dipendenze di versione fissa tra più repository di software se stai installando tutto nella tua installazione di Python di base sul tuo computer.

Invece, dovresti installare pip virtualenv e poi usarlo per gestire diverse installazioni virtuali di Python e tutti i pacchetti di pacchetti pip installati per ciascun ambiente virtuale.

Questo ti permette di passare dal lavorare, diciamo, beautifulsoup1.x in un repository software a beautifulsoup2.x in un altro repository senza dover superare l'inferno della gestione delle dipendenze.


0

Ho appena fatto un test rapido ricerca per lo stesso pacchetto utilizzando Homebrew , MacPorts e PIP3 :

brew search numpy
sudo port search --name --glob '*numpy'
pip3 search numpy

MacPorts e PIP3 avuto lo stesso pacchetto (versione 1.18.1 ), mentre Homebrew contiene la versione 1.16 .

Quando si collabora con altri, è meglio concordare su come sono configurati i propri ambienti di sviluppo o si inizierà a imbattersi in anomalie e ottenere risultati di test diversi. Pertanto, lo strumento migliore è quello su cui tutti siete d'accordo ;-)

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.