web-dev-qa-db-fra.com

Quelle est la difference entre pyenv, virtualenv, anaconda?

Je suis un programmeur Ruby qui essaie d'apprendre le python. Je suis une jolie famille avec pyenv car c'est comme un copier-coller de rbenv. Pyenv permet d’avoir plus d’une version de python dans un système et d’isoler le python sans toucher aux parties sensibles du système.

Je suppose que chaque python installation est livrée avec le paquet pip. Ce que je ne comprends toujours pas, c'est qu'il y a beaucoup de bonnes python libs qui suggèrent d'utiliser ce virtualenv et cet anaconda. Je peux même trouver le plugin virtualenv pour pyenv.

Maintenant, je suis en train de confondre le but de ces deux aspects: virtuel et virtuel. pire dans pyenv il y a un plugin virtualenv.

mes questions sont:

  • quelle est la difference entre pyenv et virtualenv?
  • Existe-t-il une différence dans l'utilisation de la commande pip dans pyenv et virtualenv?
  • qu'est-ce que ce pyenv virutalenv fait?

votre explication avec exemple sera très appréciée.

99
channa ly

Edit: Il vaut la peine de mentionner pip ici aussi, car conda et pip présentent des similitudes et des différences pertinentes pour ce sujet .

pip: le Python gestionnaire de packages.

  • Vous pouvez penser à pip en tant que python équivalent de la commande Ruby gem
  • 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 rechercher et publier des packages python à l'aide de PyPI: le Python Index de package
  • Le fichier requirements.txt est comparable au fichier Ruby gemfile.
  • Pour créer un fichier texte d'exigences, pip freeze > requirements.txt
  • Remarque: à ce stade, python est installé sur notre système et nous avons créé un fichier Requirements.txt qui décrit tous les packages python installés sur votre système.

pyenv: Python Version Manager

  • D'après la documentation : 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 bien une chose. Ce projet a été créé à partir de rbenv et Ruby-build, puis modifié pour Python.
  • Beaucoup de gens hésite à utiliser python .
  • Si vous devez utiliser différentes versions de python, pyenv vous permet de gérer cela facilement.

virtualenv: Python Environment Manager.

  • à partir de la documentation : Le problème de base à résoudre est l'un des dépendances et des versions, et indirectement les autorisations. Imaginez que vous ayez une application nécessitant la version 1 de LibFoo, mais qu'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 vous retrouver dans une situation où vous mettez à jour involontairement une application qui ne devrait pas l'être.
  • Pour créer un virtualenv, appelez simplement virtualenv ENV, où ENV est un répertoire dans lequel placer le nouvel environnement virtuel.
  • Pour initialiser la virtualenv, vous devez source ENV/bin/activate. Pour arrêter d’utiliser, appelez simplement deactivate.
  • Une fois que vous avez activé la fonction virtualenv, vous pouvez installer toutes les conditions requises pour le package d'un espace de travail en exécutant pip install -r sur le fichier requirements.txt du projet.

Anaconda: Gestionnaire de paquets + Gestionnaire de l'environnement + Bibliothèques scientifiques supplémentaires.

  • D'après la documentation : Anaconda 4.2.0 inclut une installation facile de Python (2.7.12, 3.4.5 et/ou 3.5.2) et mises à jour de plus de 100 packages scientifiques et analytiques Python prédéfinis et testés, comprenant NumPy, Pandas, SciPy, Matplotlib et IPython, avec plus de 620 autres packages disponibles via un simple conda install <packagename>
  • En tant que développeur web, je n'ai pas utilisé Anaconda. C'est ~ 3 Go, y compris tous les paquets.
  • Il existe une version allégée de miniconda, ce qui semble être une option plus simple que d'utiliser pip + virtualenv, bien que je n'ai pas l'expérience de l'utiliser personnellement.
  • Bien que conda vous permette d'installer des packages, ceux-ci sont distincts des packages PyPI. Il est donc possible que vous ayez encore besoin d'utiliser pip en fonction des types de packages à installer.

Voir aussi:

108
Wade Williams