Quelle est la différence entre pyenv, virtualenv, anaconda?
je suis un programmeur ruby essayant d'apprendre le python. Je suis une jolie famille avec pyenv puisque c'est comme un copier-coller de rbenv. Pyenv permet d'avoir plus d'une version de python dans un système et aussi d'isoler le python, sans toucher à la partie sensible du système.
je suppose que chaque installation de python vient avec un paquet pip. Ce que je ne comprends toujours pas, c'est qu'il y a beaucoup de bons libs de python qui suggèrent d'utiliser ce virtualenv et anaconda. Je peut même trouver le plugin virtualenv pour pyenv.
maintenant je me confonds avec le but de ces deux pyenv et virtualenv. pire à l'intérieur de pyenv il y a un plugin virtualenv.
mes questions sont:
- Quelle est la différence entre pyenv et virtualenv?
- y a-t-il une différence dans l'utilisation de la commande pip à l'intérieur de pyenv et de virtualenv?
- qu'est-ce que ce pyenv virutalenv do?
votre explication par exemple sera très appréciée.
1 réponses
Edit: il est intéressant de mentionner pip
ici aussi, comme conda
et pip
ont des similitudes et des différences qui sont pertinentes pour ce sujet .
pip: le Python Package Manager.
- vous pourriez penser à
pip
comme l'équivalent python du rubygem
commande -
pip
n'est pas inclus avec python par défaut. - vous pouvez installer Python en utilisant homebrew , qui installera PIP automatiquement:
brew install python
- la version finale D'OSX n'incluait pas pip par défaut. Pour ajouter pip à la version de python de votre système mac, vous pouvez
sudo easy_install pip
- vous pouvez trouver et publier des paquets python en utilisant PyPI: the Python Package Index
- les prescriptions.txt dossier est comparable à la ruby
gemfile
- pour créer un fichier texte d'exigences,
pip freeze > requirements.txt
- Remarque, à ce stade, nous avons python installé sur notre système, et nous avons créé une exigences.txt fichier qui décrit tous les paquets python qui ont été installés sur votre système.
pyenv: Python Version Manager
- De la docs : pyenv vous permet de basculer facilement entre plusieurs versions de Python. C'est simple, discret, et suit la tradition UNIX d'outils à usage unique qui font une chose bien. Ce projet a été bifurqué de rbenv et ruby-build, et modifié pour Python.
- Beaucoup de gens hésitez pas à utiliser python3 .
- si vous devez utiliser différentes versions de python,
pyenv
vous permet gérer facilement.
virtualenv: Python Environment Manager.
- From the docs : le problème de base abordé est celui des dépendances et des versions, et indirectement des permissions. Imaginez que vous ayez une application qui nécessite la version 1 de LibFoo, mais une autre application nécessite la version 2. Comment utiliser ces deux applications? Si vous installez tout dans / usr/lib / python2.7 / site-packages (ou quel que soit l'emplacement standard de votre plate-forme), il est facile de se retrouver dans une situation où vous mettez à jour involontairement une application qui ne devrait pas être mis à jour.
- pour créer un
virtualenv
, il suffit d'invoquervirtualenv ENV
, oùENV
est un répertoire pour placer le nouvel environnement virtuel. - pour initialiser le
virtualenv
, vous devezsource ENV/bin/activate
. Pour arrêter de l'utiliser, il suffit d'appelerdeactivate
. - une fois que vous avez activé le
virtualenv
, vous pouvez installer tous les paquets requis d'un espace de travail en lançantpip install -r
dans le fichierrequirements.txt
du projet.
Anaconda: Gestionnaire De Paquets + Gestionnaire D'Environnement + Bibliothèques Scientifiques Supplémentaires.
- à Partir de la documentation : Anaconda 4.2.0 comprend une installation facile de Python (2.7.12, 3.4.5, et / ou 3.5.2) et des mises à jour de plus de 100 paquets Python pré-construits et testés scientifiques et analytiques qui comprennent NumPy, Pandas, SciPy, Matplotlib, et IPython, avec plus de 620 paquets disponibles via un simple
conda install <packagename>
- en tant que développeur web, Je n'ai pas utilisé Anaconda. C'est ~3 Go incluant tous les paquets.
- il y a une version allégée
miniconda
, qui semble comme il pourrait être plus simple que d'utiliserpip
+virtualenv
, bien que je n'ai pas l'expérience de l'utiliser personnellement. - alors que
conda
vous permet d'installer des paquets, ces paquets sont séparés des paquets PyPI, donc vous pouvez toujours avoir besoin d'utiliser pip en plus en fonction des types de paquets que vous devez installer.
Voir aussi:
- conda vs pip vs virtualenv (section dans la documentation de anaconda)
- la différence entre le pip et conda (stackoverflow)
- la relation entre virtualenv et pyenv (stackoverflow)