La differenza tra conda install e pip install.Confronto di funzioni, ecc. [Python]

2019 年 5 月 26 日

Fino ad ora, l'installazione di pip era riconosciuta come sostituto solo quando l'installazione di conda non era disponibile.Se il pacchetto che volevo non era nel repository di Anaconda, l'ho installato con pip, e ad un certo punto l'ambiente è stato danneggiato a causa di questi conflitti.

L'ambiente di Anaconda è stato danneggiato quando ho pensato che il Jupyter Notebook non si avviava

Dato che è stata una grande opportunità, ho studiato la differenza tra pip e conda, quindi lo lascerò come un memorandum di seguito.

Differenza tra conda e pip

Cos'è Conda

In poche parole, è un gestore di pacchetti fornito di serie con Anaconda / Miniconda ed è un sistema di gestione ambientale.

Anaconda è una piattaforma che fornisce pacchetti per la scienza dei dati (se stai arrivando a scoprire la differenza tra conda e pip, lo sai già). Puoi installare linguaggi di programmazione per la scienza dei dati come Python e R e pacchetti necessari per l'analisi statistica e l'apprendimento automatico tutto in una volta e puoi creare immediatamente un ambiente che utilizza Python.
C'è anche una Miniconda che ha la configurazione minima.

conda funziona solo se installato dall'installer di Anaconda o dall'installer di miniconda. Anche se installi conda nell'ambiente di python + pip, non puoi usarlo come nella distribuzione di Anaconda.

Cos'è pip

Un programma di installazione di pacchetti Python standard e un sistema di gestione dei pacchetti fornito con l'installazione di Python puro.

Scarica e installa pacchetti da Python Package Index (PyPI), un repository per linguaggi di programmazione Python.

Differenze in ciascuna funzione

I ruoli di conda e pip sono riassunti in una semplice tabella.

機能conteaseme
Installazione e gestione dei pacchetti
Cambio della versione di PythonNon possibile (sostituire con pipenv, pyenv)
Gestione dell'ambiente virtualeNon possibile (sostituire con pipenv, virtualenv, venv)

Poiché conda è anche un sistema di gestione dell'ambiente, è possibile creare un ambiente virtuale, modificare la versione di Python in 3.7 o passare alla 2.7.

Con pip, installerai e utilizzerai pacchetti come pyenv (controllo della versione) e venv (gestione dell'ambiente virtuale).

Di recente è uscito pipenv e sembra che abbia una funzione che può quasi sostituire conda.

conda install e pip install

I comandi per conda install e pip install sono simili, ma il meccanismo per l'installazione dei pacchetti sembra essere abbastanza diverso. C'è una tabella di confronto di facile comprensione sul sito anaconda.com, quindi la citerò (giapponese e modificata per renderla più facile da capire).

conda installareinstallazione pip
Formato del pacchettobinarioruota o fonte
compilare不要necessità
Tipo di pacchettoSono possibili anche altre linguesolo python
Gestione dell'ambiente virtuale, gestione delle versionipossibileNon possibile (sostituire virtualenv, venv)
Controllo delle dipendenzeあ りnessuno
Origine del download del pacchettorepository anaconda, nuvola anacondaPyPl

・ Conda supporta linguaggi diversi da python

Anaconda / Miniconda è una multipiattaforma che consente di installare più linguaggi di programmazione come Python, R, Ruby, Java, JavaScript, C / C ++, FORTRAN e relativi pacchetti.

conda può installare pacchetti software scritti in varie lingue sulla sua multipiattaforma.

pip può essere installato solo sui pacchetti Python.

-Se è richiesta la compilazione

Più di 1000 pacchetti che possono essere installati con il comando conda sono archiviati in un repository dedicato chiamato Anaconda cloud.

Poiché questi pacchetti sono file binari compilati, possono essere scaricati e installati senza la necessità di un compilatore.

I file che installi con pip contengono i file sorgente, che dovrai compilare sul lato client.

Ciò può causare problemi a seconda dell'ambiente e sembra essere una delle cause che spesso inciampa quando si costruisce un ambiente.può essere.Potrebbe richiedere dipendenze esterne.

・ Se è presente o meno un controllo delle dipendenze

Sembra che pip non assicuri che tutte le dipendenze siano soddisfatte contemporaneamente ogni volta che viene installato un pacchetto.In questo caso, si verificheranno conflitti se i pacchetti installati hanno versioni differenti dei pacchetti da cui dipendono.

conda lo supporta fornendo un solutore SAT che raccoglie i metadati per tutti i pacchetti per comprendere le dipendenze.Durante l'installazione, comprendere rapidamente le complesse dipendenze tra i pacchetti ed eseguire gli aggiornamenti e le installazioni appropriati.

・ Differenza nella velocità di esecuzione

C'erano anche informazioni che le operazioni con la matrice con numpy installato con conda sono più veloci.Dipende dal tipo di calcolo, ma sembra che la differenza sia più che doppia.

Esistono vari metodi di implementazione per BLAS (Basic Linear Algebra Subprograms) che effettivamente gestiscono le operazioni di matrice chiamate da NumPy, e uno di questi è Intel MKL (Math Kernel Library) sviluppato da Intel.).In realtà, BLAS chiamato da NumPy installato da Anaconda è MKL, ma quando NumPy è installato con pip, di solito viene utilizzato BLAS chiamato OpenBLAS, quindi c'è la possibilità che ci sia una differenza nelle prestazioni qui.

Differenza nella velocità di NumPy tra NumPy di ​​Anaconda e pip-Orizuru

BLAS è una libreria che esegue calcoli matrici e vettoriali di base. Ci sono altre formiche vive nella libreria numpy e non sono sicuro ...

"Quanto la velocità di elaborazione del calcolo cambia effettivamente a seconda della differenza di BLAS" e "Come scoprire quale BLAS viene utilizzato nel proprio ambiente" sono riassunti in dettaglio nelle pagine seguenti.Si prega di fare riferimento se si vuole.

Sembra che la velocità di calcolo cambi a seconda del BLAS utilizzato per Numpy [Python]

Questa è la differenza tra conda e pip.

riferimento


Capire Conda e Pip
https://conda.io/en/latest/
Confronta le velocità di NumPy di ​​Anaconda e NumPy di ​​PyPI
Smetti di installare Tensorflow usando pip per motivi di prestazioni!