Logotipo de Zephyrnet

Elegir la herramienta de entorno de Python adecuada para su próximo proyecto

Fecha:

Introducción

Establecer un entorno es el primer paso para Python desarrollo, y es crucial porque la administración de paquetes puede ser un desafío con Python. Y también Python es un lenguaje flexible que se puede aplicar en varios dominios, incluida la programación científica, DevOps, automatización y desarrollo web. Dada la longitud y amplitud de las aplicaciones de terceros, su entorno global se convertirá en un desastre inflado en muy poco tiempo.

Es un hecho bien conocido en la comunidad de desarrolladores que Python es malo para administrar paquetes. Si hay un meme que lo resuma, sería este;

Entorno de Python
Entorno de Python

Entonces, ¿cuál es la solución a esto? Bueno, para evitar cualquier peligro relacionado con la gestión de dependencias, se utilizan entornos virtuales. Los entornos virtuales son imprescindibles si está realizando algún desarrollo en Python.

Hay muchas herramientas de entorno virtual, cada una con características únicas. En este artículo, analizaremos algunos de los entornos de Python más populares, sus características únicas y sus deficiencias, y también aprenderemos a configurar entornos virtuales con esas herramientas.

Según sus preferencias, puede utilizar cualquiera de estas herramientas para configurar su entorno de desarrollo. Pero antes, veamos algunos beneficios del uso de entornos virtuales.

Este artículo fue publicado como parte del Blogatón de ciencia de datos.

Índice del contenido

¿Por qué utilizar entornos virtuales?

Entornos virtuales de Python

Hay varios beneficios de usar entornos virtuales:

  • Manejo de dependencia: Administrar paquetes mientras se construye cualquier cosa puede ser más complicado. Los entornos de desarrollo pueden facilitar la administración de paquetes. Podemos mencionar explícitamente las versiones de las bibliotecas, y el entorno de desarrollo se asegurará de que las dependencias estén instaladas y configuradas.
  • Reproducibilidad: Los entornos virtuales facilitan la recreación del mismo entorno de desarrollo en varias máquinas. Garantiza que todos los colaboradores del proyecto utilicen las mismas dependencias y herramientas. Por lo tanto, reduce los riesgos de descifrar códigos y errores.
  • Depuración: Al aislar el entorno, puede identificar más fácilmente qué paquetes o configuraciones están causando problemas y abordarlos sin afectar otras partes del sistema.
  • Seguridad: Aislar los entornos de desarrollo garantizará que ninguna vulnerabilidad de seguridad afecte a otras partes del sistema.
  • Aislamiento: Su código está aislado del entorno global. Los paquetes que instale permanecerán dentro del entorno virtual. Por lo tanto, no contaminará su entorno global de Python. Linux y Mac vienen con una instalación predeterminada de Python y paquetes relacionados. instalar paquetes directamente podría generar problemas con los que no desea lidiar. Por lo tanto, es crucial usar dependencias virtuales para aislar diferentes instalaciones.

En general, es crucial usar entornos virtuales para crear un espacio consistente, estable y seguro para el desarrollo de software.

Hay muchas herramientas para administrar entornos virtuales en Python. En este artículo, discutiremos algunas de las herramientas de entorno virtual más utilizadas, como,

  1. python venv
  2. pipenv
  3. Pyenv
  4. Poesía

Entorno Venv Python

Python venv es la herramienta de entorno virtual más popular que existe. Viene con la instalación de Python3. Entonces, si está utilizando Python3, no necesita instalar nada. Venv ayuda a crear entornos virtuales ligeros. Venv simplifica la creación y administración de entornos.

Para crear un tipo de entorno virtual,

python -m venv <env name>

Activar entorno

source <path to env folder>/bin/activate

Una vez activado, puede instalar cualquier paquete usando pip. Para ver los paquetes instalados y sus versiones escriba,

pip freeze

Guárdelo como un tipo de archivo de texto,

pip freeze > requirements.txt

Para cerrar el entorno, escriba el comando desactivar.

Pyenv

Hay momentos en los que necesita múltiples Instalaciones de Python en tu sistema Por ejemplo, cuando necesite probar si una característica funciona en diferentes versiones de Python. Pero la instalación de múltiples versiones de Python podría romper su código existente, lo que nadie quiere. La mejor solución es utilizar una herramienta como Pyenv. Pyenv le permite instalar diferentes versiones de Python en su sistema sin causar disputas.

Instalar y configurar Pyenv puede ser un poco complicado. Pyenv requiere que se instalen algunas dependencias a medida que se compila desde la fuente. Si está en Ubuntu/Debian, ejecute el siguiente comando

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

Para CentOS/Fedora/RHEL,

sudo yum instalar gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite
sqlite-devel abressl-devel xz xz-devel libffi-devel

Ahora, está listo para instalar Pyenv.

curl pyenv.ejecutar | intento

Ahora, agregue Pyenv a la ruta en el archivo .bashrc. Abra el archivo usando cualquier editor que desee. Usaremos “vi” para abrir y editar el archivo.

vi ~ / .bashrc

Escriba la letra "o" para ingresar al modo INSERTAR. Ahora, copie y pegue el siguiente código y reinicie el shell.

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

Ahora puede instalar cualquier versión específica de Python en su sistema.

pyenv instalar python 3.8.15

Consulte las versiones de Python en su sistema

$ pyenv versions * system (set by /home/sunil/.pyenv/version) 3.8.15 3.10.4

Puedes ver que tengo dos versiones diferentes de Python instaladas. También puede configurar sus entornos globales y locales de Python ejecutando el siguiente comando.

$ pyenv global 3.8.15
$ python --version
Python 3.8.15

Configurar el Direnv

Direnv es una de esas herramientas que puede mejorar su productividad como desarrollador de Python. Recuerda, ¿cuántas veces te has olvidado de activar el entorno virtual y empezar a ejecutar códigos? Bueno, creo que nos ha pasado a la mayoría de nosotros. Aquí es donde entra en juego Direnv. Con Pyenv y Direnv configurados, no necesita activar su entorno virtual de forma explícita. Direnv se encargará de esto en su nombre.

Entonces, ¿cómo configuramos Direnv para nuestro entorno?

Comencemos instalando Direnv. Para instalar en un tipo de distribución Debian/Ubuntu,

sudo apt-get direnv

Si usa el tipo de distribución basado en Fedora/CentOS/RedHat,

sudo dnf install direnv

Ahora, agregue este archivo a su archivo .bashrc.

eval "$(direnv hook bash)"

Agregue un nuevo archivo llamado .direnvrc en su carpeta de inicio (~) con este contenido:

use_python() { local python_root=$(pyenv root)/versions/$1 load_prefix "$python_root" if [[ -x "$python_root/bin/python" ]]; then layout python "$python_root/bin/python" else echo "Error: $python_root/bin/python can't be executed." exit fi
}

Cree un entorno virtual para su proyecto agregando un archivo llamado .envrc en la carpeta principal del repositorio del proyecto con este contenido:

use python 3.10.4 #or any version you have installed in pyenv

Ahora escribe

direnv allow

Reinicie o cree un nuevo shell y "cd" en él, y vea la magia. Su entorno virtual se encenderá automáticamente. Verás algo como esto.

source "/home/sunil/Django/Feed App/.direnv/python-3.10.4/bin/activate"
direnv: loading ~/Django/Feed App/.envrc
direnv: using python 3.10.4
direnv: export +CPATH +LD_LIBRARY_PATH +LIBRARY_PATH +MANPATH +PKG_CONFIG_PATH +VIRTUAL_ENV ~PATH

Para desactivar el entorno, salga del directorio de su proyecto. tan conveniente

Entorno Python de Pipenv

El próximo candidato en esta lista es Pipenv. Pipenv intenta traer lo mejor de todos los administradores de paquetes como yarn, npm, cargo, composer, etc. Una de las ventajas de usar Pipenv es que no necesita usar pip y venv por separado. Aparte de esto, Pipenv tiene como objetivo resolver varios problemas utilizando archivos requirements.txt, como dependencias anidadas o paquetes con múltiples subdependencias, que pueden causar errores más adelante al recrear el entorno del código.

Pipenv usa Pipfile y un Pipfile. archivo de bloqueo para resolver problemas relacionados con dependencias complejas. Un pipfile se genera automáticamente cuando crea un entorno virtual con Pipenv. Es similar a un archivo requirements.txt. Es un archivo de especificación de alto nivel para el proyecto y se actualiza en tiempo real. El archivo de bloqueo pipfile especifica las versiones exactas de las dependencias. El archivo de bloqueo garantiza que los paquetes instalados sean de las mismas versiones en todos los sistemas.

La configuración es fácil, instale Pipenv a través de pip,

pip install pipenv

Si está recreando un entorno, escriba

pipenv install -

Esto instalará todas las dependencias enumeradas en el archivo de bloqueo en un entorno virtual. Para activar el tipo de shell:

pipenv shell

Para salir del shell, escriba exit. Otra característica que hace de Pipenv una mejor opción es que puede ver el gráfico de dependencia de los paquetes instalados. Para ver el tipo de gráfico de dependencia, "gráfico pipenv".

(temp) [[email protected] temp]$ pipenv graph
numpy==1.24.2
requests==2.28.2 - certifi [required: >=2017.4.17, installed: 2022.12.7] - charset-normalizer [required: >=2,<4, installed: 3.0.1] - idna [required: >=2.5,<4, installed: 3.4] - urllib3 [required: >=1.21.1,<1.27, installed: 1.26.14]

Para saber más sobre Pipenv, echa un vistazo a su documentación oficial.

Entorno de Poesía Python

Poetry es otra herramienta moderna de Python para la gestión de dependencias y el empaquetado de archivos de Python. Proporciona una forma unificada de administrar, crear versiones, empaquetar y publicar paquetes de Python. Así como Venv usa requirements.txt y Pipenv usa Pipfile. lock, Poetry usa pyproject. toml para fijar dependencias. La Poesía usará el pyproject. archivo toml para resolver dependencias.

Para instalar Poetry, ejecute el siguiente script;

curl -sSL https://install.python-poetry.org | POETRY_HOME=/etc/poetry python3 -

Para comenzar un nuevo proyecto con Poetry, ejecute el siguiente script;

poetry new project

Esto creará el directorio del proyecto con la siguiente estructura de carpetas,

.
├── project
│ └── __init__.py
├── pyproject.toml
├── README.md
└── tests └── __init__.py

Como puede ver, tiene la carpeta del proyecto con __init__.py, pyproyecto. toml para crear dependencias, un archivo README.md para especificar información sobre el proyecto y un directorio de prueba para pruebas unitarias.

Un archivo de proyecto Py (ver más abajo) consta de tres secciones, la primera sección ([herramienta. poesía]) contiene información general. La segunda parte ([herramienta. poesía. dependencias]) fija la versión de Python y las dependencias. Y la sección final ([sistema de compilación]) especifica el sistema de compilación. Consulte a su oficial documentación para obtener información al respecto.

[tool.poetry]
name = "myproject"
version = "0.1.0"
description = ""
authors = ["sunilkumardash9 <[email protected]>"]
readme = "README.md" [tool.poetry.dependencies]
python = "^3.10"
requests = "^2.28.2" [build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

La instalación de una biblioteca es sencilla. Si está construyendo desde un repositorio con un archivo de proyecto py, poesía instalará las dependencias que se refieren al archivo de proyecto py.

#installing a single library
poetry add requests.py #installing dependencies from pyproject.toml
poetry install -

Esto agregará un archivo de bloqueo de poesía generado automáticamente al directorio del proyecto. Una vez que haya un archivo de bloqueo, la próxima vez que Poetry instale dependencias que se refieran al archivo de bloqueo.

Para ejecutar un script, puede usar el siguiente comando de poesía;

poetry run python main.py

Por ejemplo, cree un archivo main.py en el directorio de su proyecto y agréguele estas líneas.

import requests # Make an HTTP GET request to the API
response = requests.get('https://api.ipify.org') # Get the IP address from the response text
ip_address = response.text.strip() print(f"External IP Address: {ip_address}")

Ahora, ejecute el archivo usando el comando anterior para obtener el resultado.

Si no desea utilizar el comando Poetry para ejecutar archivos, active un entorno virtual con la concha de poesía dominio. Esto iniciará un entorno virtual y podrá trabajar en él como de costumbre.

Conclusión

Desarrollar dentro de un entorno virtual hará que su código sea estable, consistente y confiable durante todo el ciclo de vida del desarrollo del producto. Es una de las partes más integrales de la vida de un desarrollador de Python. Si un proyecto ya utiliza una herramienta de entorno virtual, sería mejor seguir con eso. Pero si estás comenzando un nuevo proyecto, será mejor ir con Pipenv y Poetry.

Para resumir, estos son los puntos clave del artículo:

  • Aprendimos los beneficios de usar entornos virtuales.
  • Aprendimos sobre las características distintivas de las herramientas populares del entorno Python como Venv, pyenv, Pipenv y Poetry.
  • También aprendimos a crear y administrar entornos virtuales utilizando estas herramientas.

Entonces, se trataba de diferentes entornos Python de código abierto para optimizar sus proyectos Python.

Espero que hayas encontrado útil el artículo. Sígueme en Twitter para más cosas relacionadas con el desarrollo y el aprendizaje automático.

Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor. 

punto_img

Información más reciente

punto_img