Categorías
Python

La gestión de versiones de Python múltiple con pyenv

 

Tabla de Contenidos

  • ¿Por qué utilizar pyenv? Por qué no usar Sistema Python? ¿Qué pasa con un gestor de paquetes?
  • Por qué no usar Python Sistema?
  • ¿Qué pasa con un gestor de paquetes?
  • Instalación pyenvBuild DependenciesUsing la pyenv-instalador
  • dependencias de construcción
  • Utilizando el pyenv-instalador
  • Usando pyenv instalar PythonInstallation LocationUsing la instalación de su nueva Python
  • Ubicación
  • utilizar su nuevo Python
  • pyenv Explorando Commandsinstallversionswhichgloballocalshell
  • instalar
  • versiones

  • cuales
  • mundial
  • locales
  • cáscara
  • Especificación de la versión de Python
  • entornos virtuales y pyenvCreating EnvironmentsActivating virtual Sus versiones
  • Creación de entornos virtuales
  • Activación Sus versiones
  • trabajar con múltiples entornos de múltiples
  • Activación Simultáneamente versiones
  • Conclusión
  • Bono: Visualización del nombre de un entorno en el comando Prompt
  • por qué no usar Sistema de Python?
  • ¿Qué pasa con un gestor de paquetes?
  • dependencias de construcción
  • Utilizando el pyenv-instalador Instalación
  • Ubicación
  • utilizar su nuevo Python
  • instalar versiones
  • cuales Creación
  • mundial
  • locales
  • cáscara
  • entornos virtuales
  • Activación Sus versiones

¿alguna vez ha querido contribuir a un proyecto que soporta múltiples versiones de Python, pero no están seguros de cómo se pondría a prueba fácilmente todas las versiones? ¿Alguna vez curiosidad por las últimas y mejores versiones de Python? Tal vez le gustaría probar estas nuevas características, pero usted no quiere preocuparse por echar a perder su entorno de desarrollo. Por suerte, la gestión de múltiples versiones de Python no tiene que ser confuso si utiliza pyenv.

Este artículo le proporcionará una gran visión de cómo aprovechar al máximo su tiempo dedicado a trabajar en proyectos y minimizar el tiempo dolores de cabeza tratando de utilizar la versión correcta de Python.

En este artículo, usted aprenderá a:

Bono gratuito: Haga clic aquí para obtener acceso a un capítulo de trucos Python: El libro que le muestra las mejores prácticas de Python con ejemplos simples que usted puede aplicar inmediatamente a escribir más bella código + Pythonic.

¿Por qué utilizar pyenv?

pyenv es una maravillosa herramienta para la gestión de múltiples versiones de Python. Incluso si ya tiene Python instalado en su sistema, vale la pena tener pyenv instalado para que pueda probar nuevas características del lenguaje o ayudar a contribuir a un proyecto que está en una versión diferente de Python.

Por qué no usar Python Sistema?

“Python del sistema” es el Python que viene instalado en su sistema operativo. Si estás en Mac o Linux, de forma predeterminada, cuando se escribe pitón en su terminal, se obtiene un buen pitón REPL.

Así que, por qué no usarlo? Una forma de verlo es que este Python realmente pertenece al sistema operativo. Después de todo, vino instalado con el sistema operativo. Eso se refleja incluso cuando se ejecuta el cual:

$ which python
/usr/bin/python

Aquí, pitón está disponible para todos los usuarios como lo demuestra su lugar / usr / bin / python. Es probable que, esta no es la versión de Python que desee, ya sea:

$ python -V
Pyhton 2.7.12

Para instalar un paquete en su sistema de Python, lo que tiene que ejecutar sudo pip instalar. Esto se debe a que están instalando el paquete de Python a nivel mundial, lo que es un verdadero problema si otro usuario llega y quiere instalar una versión ligeramente más antigua del paquete. Problemas

con múltiples versiones del mismo paquete tienden a arrastrarse para arriba en usted y morder cuando menos te lo esperas. Una forma común de este problema se presenta es un paquete popular y estable de repente se porta mal en su sistema. Después de horas de solución de problemas y buscar en Google, es posible que se haya instalado la versión incorrecta de una dependencia, y de arruinar su día.

Incluso si su versión de Python se instala en python3 / usr / local / bin /, todavía no estás seguro. Que se ejecutará en los mismos permisos y problemas de flexibilidad descritas anteriormente.

Además, no tienen realmente mucho control sobre versión de Python lo que viene instalado en su sistema operativo. Si desea utilizar las últimas características en Python, y estás en Ubuntu, por ejemplo, que sólo podría estar fuera de suerte. Las versiones predeterminadas podrían ser demasiado viejo, lo que significa que sólo tendrá que esperar a un nuevo sistema operativo para salir.

Por último, algunos sistemas operativos utilizan realmente el pitón acondicionado para su funcionamiento. Tome yum, por ejemplo, lo que hace un uso intensivo de Python para hacer su trabajo. Si instala una nueva versión de Python y no tiene cuidado para instalarlo en su espacio de usuario, que podría dañar seriamente su capacidad de utilizar su sistema operativo.

¿Qué pasa con un gestor de paquetes?

El siguiente lugar lógico para buscar es gestores de paquetes. Programas como apt, yum, cerveza, o el puerto son típicas opciones siguientes. Después de todo, esta es la forma de instalar la mayoría de los paquetes al sistema. Por desgracia, encontrará algunos de los mismos problemas usando un gestor de paquetes.

Por defecto, los gestores de paquetes tienden a instalar sus paquetes en el espacio del sistema mundial en lugar del espacio de usuario. Una vez más, estos paquetes a nivel de sistema contaminan el entorno de desarrollo y hacen que sea difícil compartir un espacio de trabajo con otros.

Una vez más, todavía no tienen control sobre qué versión de Python se puede instalar. Es cierto algunos repositorios le dan una selección mayor, pero por defecto, que está buscando a cualquier versión de Python con el proveedor particular es hasta en un día determinado.

Incluso si usted ha instalado Python desde un gestor de paquetes, considere lo que pasaría si usted está escribiendo un paquete y querer apoyar y probar en Python 3.4 a 3.7.

¿Qué pasaría en su sistema cuando se escribe python3? ¿Cómo te cambiar rápidamente entre las diferentes versiones? Por supuesto que puede hacerlo, pero es tedioso y propenso a errores. No importa el hecho de que si quieres PyPy, Jython, o Miniconda, entonces usted está probablemente fuera de suerte con su gestor de paquetes.

Con estas limitaciones en mente, vamos a recapitular los criterios que permiten instalar y gestionar versiones de Python fácil y flexible:

pyenv le permite hacer todas estas cosas y más.

Instalación pyenv

Antes de instalar pyenv sí, vas a necesitar algunas dependencias OS-específicas. Estas dependencias son en su mayoría utilidades de desarrollo escritas en C y son necesarios porque pyenv instala Python mediante la construcción de la fuente. Para un desglose más detallado y explicación de las dependencias de construcción, se puede ver los documentos oficiales. En este tutorial, verás las formas más comunes para instalar estas dependencias.

Nota: pyenv no apoyó inicialmente de Windows. Sin embargo, parece que hay un poco de apoyo básico con el proyecto pyenv-ganar que recientemente se convirtió en activo. Si utiliza Windows, no dude en comprobarlo.

dependencias de construcción

pyenv construye Pitón de la fuente, lo que significa que tendrá dependencias de construcción para su uso en realidad pyenv. Las dependencias de construcción varían según la plataforma. Si usted está en Ubuntu / Debian y desea instalar las dependencias de construcción, se puede utilizar el siguiente:

$ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl

Esto utiliza APT para instalar todas las dependencias de construcción. Dejar que esta carrera, y usted estará listo para ir a los sistemas Debian.

Si utiliza Fedora / CentOS / RHEL , se podría utilizar yum para instalar las dependencias de compilación:

$ sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite \
sqlite-devel openssl-devel xz xz-devel libffi-devel

Este comando instalará todas las dependencias de la construcción para Python usando yum. usuarios

macOS pueden utilizar el siguiente comando:

$ brew install openssl readline sqlite3 xz zlib

Esta orden se basa en Homebrew e instala las pocas dependencias para los usuarios de MacOS.

Consejo: Cuando se ejecuta Mojave o superior (10.14+) también tendrá que instalar las cabeceras del SDK adicionales:

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

Gracias a Rodrigo Viera para la actualización.

Si está usando en su lugar openSUSE entonces tendría que ejecutar la siguiente:

$ zypper in zlib-devel bzip2 libbz2-devel libffi-devel \
libopenssl-devel readline-devel sqlite3 sqlite3-devel xz xz-devel

Una vez más, este comando instala todas las dependencias de construcción de Python para su sistema.

Por último, para los usuarios Alpine , puede utilizar esto: comando utiliza

$ apk add libffi-dev ncurses-dev openssl-dev readline-dev \
tk-dev xz-dev zlib-dev

Este apk como el gestor de paquetes e instalará todas las dependencias de construcción para Python sobre el Alpine.

Usando el instalador pyenv-

después de haber instalado las dependencias de construcción, ya está listo para instalar pyenv sí. Le recomiendo usar el proyecto pyenv-instalador:

$ curl https://pyenv.run | bash

Esto instalará pyenv junto con algunos plugins que son útiles:

Nota: El comando anterior es la misma que la descarga de la secuencia de comandos pyenv-instalador y ejecutarlo localmente. Así que si desea ver exactamente lo que está corriendo, se puede ver el archivo usted mismo. Alternativamente, si realmente no desea ejecutar un script, puede obtenerlos las instrucciones de instalación manual.

Al final de la carrera, usted debe ver algo como esto:

WARNING: seems you still have not added 'pyenv' to the load path.

# Load pyenv automatically by adding
# the following to ~/.bashrc:

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

La salida se basará en su concha. Sin embargo, usted debe seguir las instrucciones para agregar pyenv a su camino y para inicializar pyenv / la ejecución automática pyenv-virtualenv. Una vez que hayas hecho esto, es necesario volver a cargar el shell:

$ exec "$SHELL" # Or just restart your terminal

Eso es todo. Ahora tiene pyenv e instalado cuatro plugins útiles.

Usando pyenv instalar Python

Ahora que ha instalado pyenv, la instalación de Python es el siguiente paso. Usted tiene muchas versiones de Python para elegir. Si quieres ver todos los CPython disponibles 3.6 a 3.8, se puede hacer esto:

$ pyenv install --list | grep " 3\.[678]"
3.6.0
3.6-dev
3.6.1
3.6.2
3.6.3
3.6.4
3.6.5
3.6.6
3.6.7
3.6.8
3.7.0
3.7-dev
3.7.1
3.7.2
3.8-dev

Lo anterior muestra todas las versiones de Python que pyenv sabe sobre ese partido de la expresión regular. En este caso, es decir todas las versiones disponibles CPython 3.6 a 3.8. Del mismo modo, si desea ver todas las versiones Jython, usted puede hacer esto:

$ pyenv install --list | grep "jython"
jython-dev
jython-2.5.0
jython-2.5-dev
jython-2.5.1
jython-2.5.2
jython-2.5.3
jython-2.5.4-rc1
jython-2.7.0
jython-2.7.1

Una vez más, se puede ver todas las versiones del Jython que pyenv tiene que ofrecer. Si quieres ver todas las versiones, puede hacer lo siguiente:

$ pyenv install --list
...
# There are a lot

Una vez que encuentre la versión que desea, se puede instalar con un solo comando:

$ pyenv install -v 3.7.2
mp/python-build.20190208022403.30568 ~
Downloading Python-3.7.2.tar.xz...
-> https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz
Installing Python-3.7.2...
mp/python-build.20190208022403.30568/Python-3.7.2 mp/python-build.20190208022403.30568 ~
[...]
Installing collected packages: setuptools, pip
Successfully installed pip-18.1 setuptools-40.6.2
Installed Python-3.7.2 to /home/realpython/.pyenv/versions/3.7.2

tiene problemas? La documentación pyenv tiene grandes notas de instalación, así como un FAQ útil junto con los problemas de construcción comunes.

Esto llevará un tiempo porque pyenv es la construcción de Python desde el código fuente, pero una vez hecho esto, usted tendrá Python 3.7.2 disponible en su máquina local. Si no desea ver todos los resultados, basta con retirar la bandera -v. Incluso las versiones de desarrollo de CPython se pueden instalar:

$ pyenv install 3.8-dev

Pro Tip: Si usted ha estado usando pyenv por un tiempo y no ve la versión que está buscando, es posible que tenga que ejecutar la actualización para actualizar el pyenv herramienta y asegúrese de tener acceso a las últimas versiones.

Para el resto del tutorial, los ejemplos se supone que haya instalado 3.6.8 y 2.7.15, pero usted es libre de sustituir estos valores para las versiones de Python en realidad se ha instalado. También tenga en cuenta que el sistema de la versión de Python en los ejemplos es 2.7.12. Instalación

Ubicación

Como se ha mencionado antes, pyenv funciona mediante la construcción de Python desde la fuente. Cada versión que ha instalado se encuentra muy bien en su directorio raíz pyenv:

$ ls ~/.pyenv/versions/
2.7.15 3.6.8 3.8-dev

Todas sus versiones se encuentra aquí. Esto es útil porque la eliminación de estas versiones es trivial:

$ rm -rf ~/.pyenv/versions/2.7.15

De pyenv curso también proporciona un comando para desinstalar una versión de Python en particular:

$ pyenv uninstall 2.7.15

utilizar su nuevo Python

Ahora que ha instalado un par de diferentes versiones de Python, vamos ver algunos conceptos básicos sobre cómo utilizarlos. En primer lugar, comprobar lo versiones de Python que tiene disponible:

$ pyenv versions
* system (set by /home/realpython/.pyenv/version)
2.7.15
3.6.8
3.8-dev

El * indica que la versión de Python sistema está activo actualmente. También se dará cuenta de que este es fijado por un archivo en el directorio raíz pyenv. Esto significa que, por defecto, se siguen utilizando su sistema de Python:

$ python -V
Python 2.7.12

Si tratan de confirmar esto mediante el cual, verá esto:

$ which python
/home/realpython/.pyenv/shims/python

Th es podría ser Surpr es ing, pero º es es cómo funciona pyenv. pyenv se inserta en su PATH y desde la perspectiva de su sistema operativo es el ejecutable que se recibiendo llamadas. Si quieres ver la trayectoria real, puede ejecutar el siguiente:

$ pyenv which python
/usr/bin/python

Si, por ejemplo, desea utilizar la versión 2.7.15, a continuación, puede utilizar el comando global:

$ pyenv global 2.7.15
$ python -V
Python 2.7.15

$ pyenv versions
system
* 2.7.15 (set by /home/realpython/.pyenv/version)
3.6.8
3.8-dev

Pro Tip: Una gran manera de conseguir la tranquilidad de que la versión de Python que acaba de instalar está funcionando correctamente es ejecutar la incorporada en el conjunto de pruebas: un montón

$ pyenv global 3.8-dev
$ python -m test

Esto dará inicio a las pruebas de Python internos que comprobar la instalación. Usted puede simplemente relajarse y ver pasar las pruebas.

Si alguna vez quieres volver a la versión del sistema de Python como el valor por defecto, puede ejecutar esto:

$ pyenv global system
$ python -V
Python 2.7.12

Ahora puede cambiar entre diferentes versiones de Python con facilidad. Este es solo el comienzo. Si tiene muchas versiones que desea cambiar entre, al escribir estos comandos consistentemente es tedioso. Esta sección trata cuestiones básicas, pero un mejor flujo de trabajo se describe en el trabajo con múltiples entornos.

pyenv Exploración de Comandos

pyenv ofrece muchos comandos. Se puede ver una lista completa de todos los comandos disponibles con este:

$ pyenv commands
activate
commands
completions
deactivate
...
virtualenvs
whence
which

Esto da salida a todos los nombres de comandos. Cada comando tiene una bandera –help que le dará información más detallada. Por ejemplo, si desea ver más información sobre las cuñas de comando que puede ejecutar el siguiente:

$ pyenv shims --help
Usage: pyenv shims [--short]

List existing pyenv shims

El mensaje de ayuda describe lo que se utiliza el comando de y las opciones que puede utilizar en conjunción con el comando. En las siguientes secciones, encontrará una descripción rápida y de alto nivel de los comandos más utilizados.

instalar

Ya has visto el mandato de instalación anterior. Este comando se puede utilizar para instalar una versión específica de Python. Por ejemplo, si se desean instalar 3.6.8 se usaría esto: los espectáculos de salida

$ pyenv install 3.6.8

los EE.UU. pyenv que descargan e instalan Python. Algunos de los indicadores comunes que puede que desee utilizar son los siguientes: versiones

Las versiones comando muestra todas las versiones instaladas actualmente Python:

$ pyenv versions
* system (set by /home/realpython/.pyenv/version)
2.7.15
3.6.8
3.8-dev

muestra esta salida no sólo que 2.7.15, 3.6.8, 3.8-dev, y su sistema de Python están instalados, sino que también muestra que el sistema está activo Python. Si sólo se preocupan por la versión activa actual, puede utilizar el siguiente comando:

$ pyenv version
system (set by /home/realpython/.pyenv/version)

Este comando es similar a las versiones, pero sólo le muestra la versión actual del activo Python.

cuales

El comando de la cual es útil para determinar la ruta completa a un archivo ejecutable del sistema. Debido pyenv funciona mediante el uso de cuñas, este comando le permite ver la ruta completa al ejecutable pyenv se está ejecutando. Por ejemplo, si desea ver donde está instalado pip, podría ejecutar esto:

$ pyenv which pip
/home/realpython/.pyenv/versions/3.6.8/bin/pip

El resultado muestra la ruta del sistema completo para PIP. Esto puede ser útil cuando se ha instalado aplicaciones de línea de comandos.

mundial

El comando global establece la versión global de Python. Esto se puede anular con otros comandos, pero es útil para garantizar que utiliza una versión particular de Python por defecto. Si desea utilizar 3.6.8 por defecto, entonces se podría ejecutar esto:

$ pyenv global 3.6.8

Este comando establece el ~ / .pyenv / versión a 3.6.8. Para obtener más información, consulte la sección sobre la especificación de la versión de Python.

locales

El mando local a menudo se utiliza para establecer una versión específica de la aplicación Python. Se podría utilizar para establecer la versión 2.7.15 a:

$ pyenv local 2.7.15

Este comando crea un archivo .python versión en el directorio actual. Si tiene pyenv activa en su entorno, este archivo se activará automáticamente esta versión para usted. comando

shell

La cáscara se utiliza para establecer una versión shell-específica Python. Por ejemplo, si usted quiere poner a prueba la versión 3.8-dev de Python, se puede hacer esto:

$ pyenv shell 3.8-dev

Este comando activa la versión especificada por la variable de entorno PYENV_VERSION. Este comando sobrescribe cualquier aplicación o configuración global que pueda tener. Si desea desactivar la versión, puede utilizar la bandera –unset.

Especificación de la versión de Python

Una de las partes más confusas de pyenv es cómo es exactamente el comando python se resuelva y qué comandos se puede utilizar para modificarlo. Como se mencionó en los comandos, hay 3 formas de modificar la versión de Python que esté utilizando. Entonces, ¿cómo hacer todos estos comandos interactúan unos con otros? El orden de resolución se ve un poco algo como esto:

Esta pirámide está destinado a ser leído de arriba a abajo. La primera de estas opciones que pyenv puede encontrar es la opción que va a utilizar. Vamos a ver un ejemplo rápido:

$ pyenv versions
* system (set by /home/realpython/.pyenv/version)
2.7.15
3.6.8
3.8-dev

En este caso, el sistema de Python está siendo utilizado como denotado por el *. Para ejercer el siguiente ajuste más global, el uso global:

$ pyenv global 3.6.8
$ pyenv versions
system
2.7.15
* 3.6.8 (set by /home/realpython/.pyenv/version)
3.8-dev

Se puede ver que ahora quiere utilizar pyenv 3.6.8 como nuestra versión de Python. Incluso se indica la ubicación del archivo que se encontró. Ese archivo existe realmente, y se puede listar su contenido:

$ cat ~/.pyenv/version
3.6.8

Ahora, vamos a crear un archivo .python-versión con locales:

$ pyenv local 2.7.15
$ pyenv versions
system
* 2.7.15 (set by /home/realpython/.python-version)
3.6.8
3.8-dev
$ ls -a
. .. .python-version
$ cat .python-version
2.7.15

Una vez más, pyenv indica cómo se resolvería nuestro comando python. Esta vez se trata de ~ / .python-versión. Tenga en cuenta que la búsqueda de .python-versión es recursivo:

$ mkdir subdirectory
$ cd subdirectory
$ ls -la # Notice no .python-version file
. ..
$ pyenv versions
system
* 2.7.15 (set by /home/realpython/.python-version)
3.6.8
3.8-dev

A pesar de que no hay una versión .python en el subdirectorio, la versión está siendo ajustado a 2.7.15 porque existe .python versión en un directorio padre.

Por último, se puede establecer la versión de Python con la cáscara:

$ pyenv shell 3.8-dev
$ pyenv versions
system
2.7.15
3.6.8
* 3.8-dev (set by PYENV_VERSION environment variable)

Todo esto no se establece la variable de entorno $ PYENV_VERSION:

$ echo $PYENV_VERSION
3.8-dev

Si se siente abrumado por las opciones, la sección dedicada a trabajar con múltiples entornos de alto una obstinado proceso para la gestión de estos archivos, sobre todo utilizando local.

entornos virtuales y pyenv

entornos virtuales son una parte importante de la gestión de instalaciones y aplicaciones Python. Si usted no ha oído hablar de los entornos virtuales antes, usted puede comprobar fuera de Python entornos virtuales: Una cartilla.

entornos virtuales y pyenv son una pareja hecha en el cielo. pyenv tiene un maravilloso plugin llamado pyenv-virtualenv que hace que trabajar con múltiples versiones de Python y múltiples entornos virtuales de una brisa. Si usted se pregunta cuál es la diferencia entre pyenv, pyenv-virtualenv, y herramientas como virtualenv o Venv, a continuación, no se preocupe. No estás solo.

Esto es lo que necesita saber:

  • pyenv gestiona múltiples versiones de sí mismo Python.
  • virtualenv / Venv gestiona entornos virtuales para una versión específica de Python.
  • pyenv-virtualenv gestiona entornos virtuales para a través de diferentes versiones de Python.

Si usted es un virtualenv o Venv usuario empedernido, no se preocupe: pyenv juega muy bien con cualquiera. De hecho, se puede mantener el mismo flujo de trabajo que ha tenido si lo prefiere, aunque creo que las marcas pyenv-virtualenv para una experiencia más agradable cuando se está cambiando entre múltiples entornos que requieren diferentes versiones de Python.

La buena noticia es que desde que utilizó el guión pyenv-instalador para instalar pyenv, ya tiene instalado pyenv-virtualenv y listo para funcionar.

Creación de entornos virtuales

La creación de un entorno virtual es un solo comando:

$ pyenv virtualenv

Técnicamente, el es opcional, pero siempre se debe considerar la especificación de modo que usted está seguro de qué versión de Python que esté utilizando. El

es sólo un nombre para que usted pueda ayudar a mantener sus ambientes separados. Una buena práctica es nombrar sus ambientes el mismo nombre que el proyecto. Por ejemplo, si estuviera trabajando en miproyecto y quería convertirse contra Python 3.6.8, debe ejecutar esto:

$ pyenv virtualenv 3.6.8 myproject

La salida incluye mensajes que muestran un par de paquetes adicionales Python conseguir instalados, es decir, las ruedas, PIP, y setuptools. Esto es estrictamente por conveniencia y simplemente crea un entorno destacados más completo para cada uno de sus entornos virtuales.

Activación Sus versiones

Ahora que ha creado su entorno virtual, su uso es el siguiente paso. Normalmente, usted debe activar sus entornos ejecutando el siguiente:

$ pyenv local myproject

Usted ha visto el mando local pyenv antes, pero esta vez, en lugar de especificar una versión de Python, se especifica un entorno. Esto crea un archivo .python-versión en su directorio de trabajo actual y que se le acaba eval «$ (pyenv virtualenv-init -)» en su entorno, se activará automáticamente el medio ambiente.

Usted puede verificar esto ejecutando el siguiente:

$ pyenv which python
/home/realpython/.pyenv/versions/myproject/bin/python

Usted puede ver una nueva versión ha sido creada llamada miproyecto y el ejecutable de Python está apuntando a esa versión. Si nos fijamos en cualquier ejecutable ofrece este entorno, se verá lo mismo. Tomemos, por ejemplo, pip:

$ pyenv which pip
/home/realpython/.pyenv/versions/myproject/bin/pip

Si no se configuró eval «$ (pyenv virtualenv-init -)» para ejecutar en su concha, puede manualmente activar / desactivar su versiones de Python con este:

$ pyenv activate
$ pyenv deactivate

Lo anterior es lo pyenv-virtualenv está haciendo cuando se entra o sale de un directorio con un archivo .python versión en ella.

trabajar con múltiples entornos

poner todo lo aprendido en conjunto, se puede trabajar eficazmente con múltiples entornos. Vamos a suponer que usted tiene las siguientes versiones instaladas:

$ pyenv versions
* system (set by /home/realpython/.pyenv/version)
2.7.15
3.6.8
3.8-dev

Ahora vamos a trabajar en dos diferentes, bien llamado, proyectos:

se puede ver que, por defecto, se utiliza el sistema de Python, que está indicado por el * en la salida versiones pyenv. En primer lugar, crear un entorno virtual para el primer proyecto:

$ cd project1/
$ pyenv which python
/usr/bin/python
$ pyenv virtualenv 3.6.8 project1
...
$ pyenv local project1
$ python -V
/home/realpython/.pyenv/versions/project1/bin/python

Por último, el aviso de que cuando cd fuera del directorio, que por defecto de nuevo al sistema de Python:

$ cd $HOME
$ pyenv which python
/usr/bin/python

Usted puede seguir los pasos anteriores y crear un entorno virtual para project2 :

$ cd project2/
$ pyenv which python
/usr/bin/python
$ pyenv virtualenv 3.8-dev project2
...
$ pyenv local 3.8-dev
$ pyenv which python
/home/realpython/.pyenv/versions/3.8-dev/bin/python

se trata de uno pasos de tiempo para sus proyectos. Ahora, como cd entre los proyectos, sus entornos se active automáticamente:

$ cd project2/
$ python -V
Python 3.8.0a0
$ cd ../project1
$ python -V
Python 3.6.8

No más recordar a los ambientes Activar: se puede cambiar entre todos sus proyectos, y pyenv se hará cargo de la activación automática de las versiones correctas de Python y los entornos virtuales correcto.

Activación de varias versiones Simultáneamente

como se describe en el ejemplo anterior, project2 utiliza características experimentales en 3.8. Suponga que desea asegurarse de que el código todavía funciona en Python 3.6. Si intenta ejecutar python3.6, obtendrá esto:

$ cd project2/
$ python3.6 -V
pyenv: python3.6: command not found

The `python3.6' command exists in these Python versions:
3.6.8
3.6.8/envs/project1
project1

pyenv le informa que, mientras que Python 3.6 no está disponible en el entorno activo actual, que está disponible en otros entornos. pyenv le da una forma de activar múltiples entornos a la vez utilizando un comando familiar:

$ pyenv local project2 3.6.8

Esto indica que pyenv que le gustaría utilizar el entorno de project2 virtual como la primera opción. Así que si un comando, por ejemplo pitón, se pueden resolver en ambos ambientes, se escogerá antes project2 3.6.8. Veamos lo que sucede si se ejecuta este:

$ python3.6 -V
Python 3.6.8

Aquí, los intentos pyenv para encontrar el comando python3.6, y porque se encuentra en un entorno que está activo, se permite que el comando a ejecutar. Esto es extremadamente útil para herramientas como tox que requieren múltiples versiones de Python que esté disponible en su camino con el fin de ejecutar.

Pro Tip: Si está utilizando tox y pyenv, debe pago y envío del paquete tox-pyenv.

Supongamos que en el ejemplo anterior, usted ha encontrado un problema de compatibilidad con su biblioteca y quisiera hacer algunas pruebas locales. La prueba requiere la instalación de todas las dependencias. Debe seguir los pasos para crear un nuevo entorno:

$ pyenv virtualenv 3.6.8 project2-tmp
$ pyenv local project2-tmp

Una vez que está satisfecho con sus pruebas locales, se puede cambiar fácilmente de nuevo a su entorno por defecto:

$ pyenv local project2 3.6.8

Conclusión

Ahora puede contribuir más fácilmente a un proyecto que quiere dar soporte a múltiples entornos. También puede probar más fácilmente las mejores y más recientes versiones de Python sin tener que preocuparse por echar a perder el equipo de desarrollo, todo ello con una herramienta maravillosa: pyenv.

Usted ha visto cómo pyenv puede ayudarle a:

  • instalar varias versiones de Python Interruptor
  • entre las versiones instaladas
  • Use entornos virtuales con pyenv
  • activar diferentes versiones de Python y entornos virtuales de forma automática

Si todavía tiene preguntas, no dude en llegar, ya sea en la sección de comentarios o en Twitter. Además, la documentación pyenv es un gran recurso.

Bono: Visualización del nombre de un entorno en el comando Prompt

Si eres como yo y en constante cambio entre diferentes entornos virtuales y las versiones de Python, es fácil confundirse acerca de qué versión se encuentra actualmente activo. Yo uso oh-my-zsh y el tema agnoster, que por defecto hace que mi mirada rápida como esto:

A primera vista, no sé qué versión de Python está activo. Para averiguarlo, tendría que ejecutar python -V o la versión pyenv. Para ayudar a reducir el tiempo que pasé en averiguar mi entorno Python activo, agrego el entorno virtual pyenv que estoy usando para mi pronta: Versión

Mi Python en este caso es proyecto 1-Venv y se muestra inmediatamente en el inicio del indicador. Esto me permite ver rápidamente qué versión de Python estoy a utilizar de inmediato. Si desea usar esto también, puede utilizar mi tema agnoster-pyenv.

Deja un comentario

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