158 votes

Comment puis-je garder la trace des paquets installés par pip dans un environnement Anaconda (Conda) ?

J'ai installé et utilisé le Anaconda Python, et j'ai commencé à utiliser l'environnement Anaconda (Conda). Je peux utiliser la version standard conda install... pour mettre les paquets de la distribution dans mes environnements, mais pour utiliser tout ce qui n'est pas de la distribution (c'est-à-dire Flask-WTF, flask-sqlalchemy et alembic), je dois utiliser la commande pip install dans l'environnement actif. Cependant, lorsque je regarde le contenu de l'environnement, soit dans le répertoire, soit en utilisant la commande conda list ces pip install Les paquets édités n'apparaissent pas.

Utilisation de pip freeze y pip list liste juste tous les paquets que j'ai installés.

Y a-t-il un moyen de garder une trace de ce qui est dans chacun de mes Anaconda env (les deux pip y conda installé) ?

3voto

M.H. Points 41

Je pense que ce qui manque ici, c'est que lorsque vous le faites :

>pip install .

pour installer un paquet local avec un setup.py, il installe un paquet qui est visible pour tous les envs conda qui utilisent le même version de python. Notez que j'utilise la version conda de pip !

Par exemple, si j'utilise python2.7, il place le paquet local ici :

/usr/local/anaconda/lib/python2.7/site-packages

Si je crée ensuite un nouvel environnement conda avec python=2.7 (= la valeur par défaut) :

>conda create --name new

>source activate new

Et ensuite le faire :

(new)>conda list    // empty - conda is not aware of any packages yet

Cependant, si je le fais :

(new)>pip list      // the local package installed above is present

Ainsi, dans ce cas, conda ne connaît pas le paquet pip, mais le paquet est disponible pour python.

Cependant, si j'installe à la place le paquet local (à nouveau en utilisant pip) après J'ai créé (et activé) le nouvel environnement Conda, maintenant Conda le voit :

(new)>conda list   // sees that the package is there and was installed by pip

Je pense donc que l'interaction entre conda et pip a quelques problèmes - c'est-à-dire que l'utilisation de pip pour installer un paquetage local à partir d'un env. conda rend ce paquetage disponible (mais pas visible via conda list) pour tous les autres env. conda de la même version de python.

2voto

Wes Turner Points 91

conda env export liste tous les paquets conda et pip dans un environnement. conda-env doit être installé dans la racine de conda ( conda install -c conda conda-env ).

Pour rédiger un environment.yml décrivant l'environnement actuel :

conda env export > environment.yml

Références :

2voto

Gianluca Points 2261

Je préfixe généralement le dossier 'bin/pip' pour l'environnement spécifique dans lequel vous voulez installer le paquet avant la commande 'pip'. Par exemple, si vous voulez installer pymc3 dans l'environnement py34, vous devez utiliser cette commande :

~/anaconda/envs/py34/bin/pip install git+https://github.com/pymc-devs/pymc3 

Il vous suffit de trouver le bon chemin d'accès au dossier 'bin/pip' de votre environnement et de le placer avant la commande d'installation.

2voto

Kavish Points 21

Vous pouvez commencer par installer la commande ci-dessous dans l'environnement Conda :

conda install pip

Suivi de l'installation de tous les paquets pip dont vous avez besoin dans l'environnement.

Après avoir installé tous les paquets conda et pip pour exporter l'environnement utiliser :

conda env export -n <env-name> > environment.yml

Cela créera le fichier requis dans le dossier

1voto

mario23 Points 322

Mon which pip montre le chemin suivant :

$ which pip
/home/kmario23/anaconda3/bin/pip

Ainsi, quel que soit le paquet que j'installe en utilisant pip install <package-name> devra être reflétée dans la liste des paquets lorsque la liste sera exportée à l'aide de :

$ conda list --export > conda_list.txt

Mais, je n'en ai pas. Donc, à la place, j'ai utilisé la commande suivante, comme suggéré par plusieurs autres personnes :

# get environment name by
$ conda-env list

# get list of all installed packages by (conda, pip, etc.,)
$ conda-env export -n <my-environment-name> > all_packages.yml
# if you haven't created any specific env, then just use 'root'

Maintenant, je peux voir tous les paquets dans mon all-packages.yml fichier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X