Saltar al contenido

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

Solución:

Editar: vale la pena mencionarlo 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 en pitón del rubí gem mando
  • pip no se incluye con python de forma predeterminada.
  • Puede instalar Python usando homebrew, que 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 buscar 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 un solo propósito que hacen una cosa bien. Este proyecto se bifurcó de rbenv y ruby-build, y se modificó para Python.
  • Mucha gente duda en usar python3.
  • Si necesita usar diferentes versiones de Python, pyenv le permite administrar esto fácilmente.

virtualenv: Administrador de entorno de Python.

  • De los documentos: El problema básico que se está abordando es uno de dependencias y versiones, e indirectamente 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 utilizar 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 involuntariamente actualice una aplicación que no debería actualizarse.
  • Para crear un virtualenv, simplemente invoca virtualenv ENV, dónde ENV Es un directorio para colocar el nuevo entorno virtual.
  • Para inicializar el virtualenv, necesitas source ENV/bin/activate. Para dejar de consumir, simplemente llame deactivate.
  • Una vez que active el virtualenv, puede instalar todos los requisitos del paquete de un espacio de trabajo ejecutando pip install -r contra el proyecto requirements.txt expediente.

Anaconda: Package Manager + Environment Manager + Bibliotecas científicas adicionales.

  • De los documentos: Anaconda 4.2.0 incluye una instalación fácil de Python (2.7.12, 3.4.5 y / o 3.5.2) y actualizaciones de más de 100 paquetes de Python científicos y analíticos prediseñados 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 incluidos todos los paquetes.
  • Hay un adelgazamiento miniconda versión, que parece que podría ser una opción más simple que usar pip + virtualenv, aunque no tengo experiencia en usarlo 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 dependiendo de 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)

Analogía simple:

  • pyenv ~ rbenv
  • pip ~ empaquetadora
  • entorno virtual ~ gemset en rvm. Esto puede ser gestionado por el agrupador directamente sin gemset.

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

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

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *