2015-03-26 16 views
10

Quando si utilizza la distribuzione di Anacoda Python, qual è il modo migliore per installare un pacchetto PyPi che non è disponibile direttamente tramite Anaconda? Per ora sto usando:Come installare i pacchetti PyPi utilizzando il comando anacaonda conda

conda pipbuild [pypi_name] 
conda install --use-local [package_spec] 

Ma sono poco chiaro se questo è il modo migliore e se conda update --all aggiornerà questi pacchetti quando gli aggiornamenti sono resi disponibili. Non sono nemmeno chiaro quale sia il punto di binstar quando PyPi esiste già.

risposta

13

Se si desidera creare pacchetti conda per pacchetti PyPI, il modo consigliato è utilizzare conda skeleton pypi package e utilizzare conda build package sulla ricetta che crea. Dovrai aggiornare la ricetta ogni volta che il pacchetto viene aggiornato.

È anche possibile utilizzare pip per installare questi pacchetti. Lo svantaggio qui è che questi pacchetti non saranno affatto gestiti da conda.

+1

Grazie! Domanda stupida: cosa mi prende in carico il condominio che gestisce i pacchetti? Gestione delle dipendenze per lo più? Aggiornamenti automatici? Inoltre, perché il metodo che hai descritto è preferibile a quello che ho descritto sopra? – user1507844

+0

La gestione delle cose ti offre i vantaggi della gestione delle dipendenze. Rende anche più facile usare quel pacchetto con ambienti conda. Gli aggiornamenti non avverranno "automaticamente" (nel senso che è necessario digitare 'conda update' perché ciò accada). Per quanto riguarda il motivo per cui è preferibile, 'conda skeleton' è molto più stabile di' conda pipbuild'. – asmeurer

+0

Non dice questo in http://conda.pydata.org/docs/using/pkgs.html#install-non-conda-packages dice semplicemente 'pip install x'. queste istruzioni dovrebbero essere aggiornate? – endolith

12

Non sono d'accordo con la risposta accettata e noto che pip install [some-pypi-package] è spesso il modo migliore per installare i pacchetti PyPi negli ambienti Conda.

Mentre i pacchetti non saranno gestiti dal gestore pacchetti Conda, saranno comunque gestiti dall'ambiente Anaconda. Scaricherà la versione corretta del pacchetto per l'installazione Python attiva e la aggiornerà correttamente usando il gestore di pacchetti pip.

Quando si utilizza Anaconda, si dovrebbe girare a conda prima pip quando è possibile, ma non si perde nessuno dei benefici di replicabilità di utilizzare Anaconda quando si utilizza pip.

+1

Un problema da tenere presente: se un pacchetto 'pip' richiede una versione diversa di una dipendenza già installata da' conda', 'pip' sostituirà il pacchetto installato, e' conda' non realizzerà che il pacchetto è stato installato stato rimosso. Per una configurazione di ambiente one-shot, scripted, questo probabilmente va bene. Per un ambiente che installi a mano nel tempo, rischierai di confonderti dopo un po '. –

+0

Un modo per mitigare il problema che ho menzionato sopra: salvare l'output di 'pip freeze' su' constraints.txt' e quindi installare con 'pip' usando' pip install -c constraints.txt '. Ciò impedirà a 'pip' di rimuovere i pacchetti' conda'. Inoltre bloccherà i pacchetti 'pip'. I pacchetti 'pip' possono essere filtrati da' constraints.txt' osservando l'output di 'conda list' per gli elementi contrassegnati come' '. –

+0

Per cose come Django, installerò un ambiente virtuale usando Anaconda, quindi eseguirò installazioni esclusivamente tramite pip per le ragioni sopra menzionate. Pure conda funziona meglio per ottenere insieme uno stack di calcolo scientifico che usi canali conda. –

Problemi correlati