¿Cuál es la diferencia entre pyenv, virtualenv, anaconda?
⏰ 6 minutos de lectura
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?
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.
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.
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
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.
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
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