¿Cuál es la diferencia entre pyenv, virtualenv, anaconda?

6 minutos de lectura

avatar de usuario
canna ly

Soy un programador de Ruby tratando de aprender Python. Estoy bastante familiarizado con pyenv ya que es como copiar y pegar de rbenv. Pyenv ayuda a tener más de una versión de python en un sistema y también a aislar python sin tocar partes sensibles del sistema.

Supongo que cada instalación de python viene con un paquete pip. Lo que todavía no entiendo es que hay muchas buenas bibliotecas de Python que sugieren usar este virtualenv y anaconda. Incluso puedo encontrar un complemento virtualenv para pyenv.

Ahora me estoy confundiendo con el propósito de estos dos pyenv y virtualenv. peor dentro de pyenv hay un complemento virtualenv.

Mis preguntas son:

  • ¿Cuál es la diferencia entre pyenv y virtualenv?
  • ¿Hay alguna diferencia en usar el comando pip dentro de pyenv y virtualenv?
  • ¿Qué hace este pyenv virutalenv?

Su explicación con el ejemplo será muy apreciada.

  • relacionado: stackoverflow.com/questions/29950300/…

    – cel

    6 de julio de 2016 a las 7:23


  • vea esta pregunta: relación entre virtualenv y pyenv

    – reza.bm

    21 de agosto de 2016 a las 10:33

avatar de usuario
wade williams

Editar: Vale la pena mencionar pip aquí también, como conda y pip tienen similitudes y diferencias que son relevantes para este tema.

pip: el administrador de paquetes de Python.

  • Podrías pensar en pip como el equivalente pitón del rubí gem dominio
  • pip no está incluido con python por defecto.
  • Puede instalar Python usando cerveza caseraque instalará pip automáticamente: brew install python
  • La versión final de OSX no incluía pip por defecto. Para agregar pip a la versión de Python de su sistema Mac, puede sudo easy_install pip
  • Puede encontrar y publicar paquetes de python usando PyPI: el índice de paquetes de Python
  • El archivo requirements.txt es comparable al ruby gemfile
  • Para crear un archivo de texto de requisitos, pip freeze > requirements.txt
  • Tenga en cuenta que, en este punto, tenemos Python instalado en nuestro sistema y hemos creado un archivo requirements.txt que describe todos los paquetes de Python que se han instalado en su sistema.

pyenv: Administrador de versiones de Python

  • de los documentos: pyenv le permite cambiar fácilmente entre múltiples versiones de Python. Es simple, discreto y sigue la tradición de UNIX de herramientas de propósito único que hacen bien una cosa. Este proyecto se bifurcó de rbenv y ruby-build y se modificó para Python.
  • mucha gente dude en usar python3.
  • Si necesita usar diferentes versiones de python, pyenv le permite administrar esto fácilmente.

virtualenv: Administrador de entornos de Python.

  • de los documentos: El problema básico que se aborda es el de las dependencias y versiones, e indirectamente los permisos. Imagine que tiene una aplicación que necesita la versión 1 de LibFoo, pero otra aplicación requiere la versión 2. ¿Cómo puede usar ambas aplicaciones? Si instala todo en /usr/lib/python2.7/site-packages (o cualquiera que sea la ubicación estándar de su plataforma), es fácil terminar en una situación en la que actualiza sin querer una aplicación que no debería actualizarse.
  • Para crear un virtualenvsimplemente invocar virtualenv ENVdónde ENV Este es un directorio para colocar el nuevo entorno virtual.
  • Para inicializar el virtualenvnecesitas source ENV/bin/activate. Para dejar de usar, simplemente llame deactivate.
  • Una vez que active el virtualenvpuede instalar todos los requisitos del paquete de un espacio de trabajo ejecutando pip install -r contra el proyecto requirements.txt expediente.

Anaconda: Gestor de paquetes + Gestor de entornos + Bibliotecas científicas adicionales.

  • de los documentos: Anaconda 4.2.0 incluye una fácil instalación de Python (2.7.12, 3.4.5 y/o 3.5.2) y actualizaciones de más de 100 paquetes de Python analíticos y científicos preconstruidos y probados que incluyen NumPy, Pandas, SciPy, Matplotlib , e IPython, con más de 620 paquetes más disponibles a través de un simple conda install <packagename>
  • Como desarrollador web, no he usado Anaconda. Son ~3GB incluyendo todos los paquetes.
  • Hay un adelgazado miniconda versión, que parece que podría ser una opción más simple que usar pip + virtualenvaunque no tengo experiencia usándolo personalmente.
  • Tiempo conda le permite instalar paquetes, estos paquetes son independientes de los paquetes de PyPI, por lo que es posible que deba usar pip adicionalmente según los tipos de paquetes que necesite instalar.

Ver también:

  • conda vs pip vs virtualenv (sección en la documentación de anaconda)
  • la diferencia entre pip y conda (stackoverflow)
  • la relación entre virtualenv y pyenv (stackoverflow)

  • Esto probablemente podría usar una actualización ahora, cf stackoverflow.com/a/49084152/14420

    – matt wilkie

    26 de agosto de 2018 a las 21:14

  • ¿Podría esto ser actualizado a incluido a pipenv ya que actualmente parece ser la herramienta de empaquetado de Python recomendada oficialmente por Python.org?

    – Navegador de olas

    31/01/2019 a las 20:40


  • ¿Cuál es el problema con la instalación de solo 3 GB de bibliotecas? No querrá implementar todas esas bibliotecas, pero el hecho de que tenga 3 GB de bibliotecas instaladas no significa que deba implementarlas todas. Y esa es una pequeña cantidad de espacio en el disco duro en estos días. Actualmente uso una instalación de anaconda y administro mis entornos con venv, pero estaba considerando si usar conda para mis entornos virtuales también (no creo que lo haga; venv me parece un flujo de trabajo más fluido).

    – David

    25 de febrero de 2019 a las 12:21


  • @David, llegué un poco tarde, pero ¿puede ampliar venv me parece un flujo de trabajo más fluido?

    – AMC

    9 de enero de 2020 a las 1:49

  • @Aditya Tienes un muy buen punto. Me sentí cómodo con venv, es la razón principal. Pero desde entonces cambié a usar conda para administrar mis paquetes, y me gusta.

    – David

    16 de febrero de 2021 a las 22:44

avatar de usuario
canna ly

analogía sencilla:

  • pyenv ~ rbenv
  • pepita ~ empaquetador
  • entorno virtual ~ conjunto de gemas en rvm. Esto puede ser administrado por bundler directamente sin gemset.

Como uso python3, prefiero el entorno virtual integrado de python3 llamado venv. venv es simple y fácil de usar. Te recomiendo que leas sus documentos oficiales. El documento es corto y conciso.

En Ruby, realmente no necesitamos un entorno virtual porque el empaquetador se encarga de ello. Tanto virtual env como bundler son geniales, sin embargo, tienen diferentes soluciones para resolver el mismo problema.

  • pipenv es similar a bundler. pepita a gema.

    – danilo

    21 de julio de 2021 a las 20:05

avatar de usuario
Jorge Tovar

Explicación sencilla: https://docs.conda.io/projects/conda/en/latest/commands.html#conda-vs-pip-vs-virtualenv-commands

si has usado pepita y entorno virtual en el pasado, puedes usar conda para realizar todas las mismas operaciones.

  • Pip es un administrador de paquetes
  • virtualenv es un administrador de entornos
  • Conda es ambos

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad