2015-03-26 1 views
10

Lorsque vous utilisez la distribution Anacoda Python, quelle est la meilleure façon d'installer un paquet PyPi qui n'est pas disponible directement via Anaconda? Pour l'instant j'utilise:Comment installer les paquets PyPi en utilisant la commande anacaonda conda

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

Mais je ne suis pas clair si cela est la meilleure façon et si conda update --all mettra à jour ces packages lors de mises à jour sont disponibles. Je ne sais pas non plus quel est le but de binstar quand PyPi existe déjà.

Répondre

13

Si vous souhaitez créer des packages condi pour les packages PyPI, il est recommandé d'utiliser conda skeleton pypi package et d'utiliser conda build package dans la recette qu'il crée. Vous devrez mettre à jour la recette chaque fois que le paquet est mis à jour. Vous pouvez également utiliser pip pour installer ces packages. L'inconvénient est que ces paquets ne seront pas gérés par des conda.

+1

Merci! Question stupide: qu'est-ce que le condo gère les colis? La gestion de la dépendance principalement? Mises à jour automatiques? En outre, pourquoi la méthode que vous avez décrite est préférable à ce que j'ai décrit ci-dessus? – user1507844

+0

Conda gérer les choses vous obtient les avantages de la gestion des dépendances. Cela facilite également l'utilisation de ce paquet avec des environnements conda. Les mises à jour ne se feront pas "automatiquement" (en ce sens que vous devez taper "conda update" pour que cela se produise). En ce qui concerne les raisons pour lesquelles il est préférable, «conda skeleton» est beaucoup plus stable que «conda pipbuild». – asmeurer

+0

Il ne dit pas cela dans http://conda.pydata.org/docs/using/pkgs.html#install-non-conda-packages il dit juste 'pip install x'. Ces instructions devraient-elles être mises à jour? – endolith

12

Je ne suis pas d'accord avec la réponse acceptée et notez que pip install [some-pypi-package] est souvent le meilleur moyen d'installer des paquets PyPi dans des environnements Conda. Bien que les paquets ne soient pas gérés par le gestionnaire de paquets Conda, ils seront toujours gérés par l'environnement Anaconda. Il téléchargera la version correcte du package pour l'installation Python active et la mettra à jour correctement à l'aide du gestionnaire de packages pip.

Lorsque vous utilisez Anaconda, vous devez tourner vers conda avant pip quand vous le pouvez, mais vous ne perdez aucune des avantages de l'utilisation réplicabilité Anaconda lorsque vous utilisez pip.

+1

Un problème à prendre en compte: si un paquet 'pip' nécessite une version différente d'une dépendance déjà installée par' conda', 'pip' remplacera le paquet installé, et' conda' ne réalisera pas que son paquet a été enlevé. Pour une configuration d'environnement en un coup, avec script, c'est probablement très bien. Pour un environnement que vous installez à la main au fil du temps, vous finirez probablement par être confus au bout d'un moment. –

+0

Une façon d'atténuer le problème que j'ai mentionné ci-dessus: enregistrer la sortie de 'pip freeze' à' contraintes.txt', puis installer avec 'pip' en utilisant' pip install -c constraints.txt '. Cela empêchera 'pip' de supprimer les paquets' conda'. Il va également épingler les paquets 'pip'. Les paquets 'pip' pourraient être filtrés à partir de' contraintes.txt' en regardant la sortie de 'conda list' pour les éléments marqués comme' '. –

+0

Pour des choses comme Django, je vais mettre en place un environnement virtuel en utilisant Anaconda puis faire des installations purement par pip pour les raisons mentionnées ci-dessus. Pure conda fonctionne mieux pour obtenir une pile informatique scientifique qui utilise des canaux conda. –