virtualenv
le permite crear una instalación personalizada de Python, por ejemplo, en un subdirectorio de su proyecto. Cada uno de sus proyectos puede tener su propio python
(o incluso varios) bajo su respectivo virtualenv. Está perfectamente bien que algunos / todos los virtualenvs tengan incluso la misma versión de python
(por ejemplo, 2.7.16) sin conflicto: viven por separado y no se conocen entre sí. Si desea usar cualquiera de esos python
s, debe activate
hacerlo (ejecutando un script que modificará temporalmente su PATH
para asegurarse de que el bin/
directorio de virtualenv sea lo primero). A partir de ese momento, llamar python
(o pip
etc.) invocará la versión de ese virtualenv hasta que deactivate
lo restablezca PATH
.
pyenv
opera en una escala más amplia que virtualenv
: contiene un registro de las instalaciones de Python (y puede usarse para instalar otras nuevas) y le permite configurar qué versión de Python ejecutar cuando usa el python
comando. Suena similar pero el uso práctico es un poco diferente. Funciona anteponiendo su python
script shim a su PATH
(permanentemente) y luego decidiendo qué "real" python
invocar. Incluso puede configurar pyenv para llamar a una de sus pitones virtualenv (utilizando el pyenv-virtualenv
complemento). Las versiones de Python que instala usando pyenv
van a su $(pyenv root)/versions/
directorio (por defecto, la raíz de pyenv es ~ / .pyenv), por lo que son más 'globales' que virtualenv. Por lo general, no puede duplicar las versiones de Python instaladas pyenv
, al menos no es la idea principal.
Para crear un virtualenv con una versión específica de Python, necesita tener esa versión en algún lugar de su sistema (ya sea en el PATH
o no) y esencialmente clonarla en su virtualenv recién creado. Por supuesto, una forma de obtener una versión en particular es instalarla a través de pyenv
. Una vez hecho esto, los virtualenvs individuales son libres de divergir al tener instalados diferentes módulos (o versiones de los mismos).
En breve:
virtualenv
le permite crear instalaciones de python locales e independientes mediante la clonación de las existentes
pyenv
le permite instalar diferentes versiones de python simultáneamente (ya sea en todo el sistema o solo para el usuario local) y luego elegir cuál de la multitud de pitones ejecutar en un momento dado (incluidas las creadas por virtualenv o Anaconda)