🎯 Desarrollo de Python con entornos virtuales
Archivos »
Reportar un bug
·
Asignar una feature
Table of Contents
Por defecto la instalación de Python, incluye una gran cantidad de librerías de manera nativa y por defecto en la instalación de Python. Sin embargo es habitual el uso de liberías de terceros, como en este caso FastAPI.
Para instalar y manejar paquetes, el módulo pip es la herramienta que nos permite instalar estas librerías de terceros, sin embargo esto lo realiza de manera global.
Cuando compartimos el código, mediante un repositorio en GitHub por ejemplo, para poder ejecutar la aplicación deberemos instalar todas aquellas librerías de terceros que hemos instalado previamente de manera manual, con el riesgo que eso conlleva.
Para ello existen dos alternativas:
- Usar contenedores (Docker por ejemplo)
- Usar Entornos virtuales
Porqué?
- Tu tiempo es valioso y debes enfocarte en crear soluciones para resolver problemas que ayuden a otros.
- No deberías pasar tiempo instalando y desinstalando versiones de Python una y otra vez por cada proyecto.
- Deberías implementar el principio KISS para el resto de tu vida y esto es parte de ello 😄
En este tutorial nos enfocaremos en el uso y desarrollo con entornos virtuales.
Para comenzar el backend esta creado con:
Es un directorio autocontenido, que en su interior contiene una instalación de python con la versión particular para ese proyecto. Nos permite instalar además librería de terceros.
Es decir, permite ejecutar un proyecto con python y sus librerías, al mismo tiempo que tenemos otro proyecto con versiones de python y/o librerías distintas, sin necesidad de instalar y desinstalar cada vez que cambiemos de proyecto.
La principal ventaja que nos encontramos es que nos permiten la portabilidad de nuestras aplicaciones. Imagina que escribes código, subes al repositorio y un compañero continúa con el proyecto desde su ordenador. El deberá instalar las liberías necesarias, pero puede ocurrir que existan diferentes versiones disponibles, esto lo podemos simplificar con una técnica similar al package.json de NodeJs, técnica que veremos mas adelante.
Otra ventaja es la estandarización, tu y todos los desarrolladores que trabajéis sobre la aplicación utilizaréis las mismas versiones tanto del lenguaje y de las librerías.
Para poder explicar las diferencias, podemos apreciar la comparación entre ambas imagenes
Crear un entorno virtual es relativamente sencillo, para ello necesitaremos tener instalado:
Cómo instalar alguna de las herramientas
-
Git
-
macOS -> Homebrew package manager -> [Learn more here][gitMac]
brew install git
-
Linux
- Para distribuciones basadas en Debian/Ubuntu
apt-get install git
- Basadas en Fedora
yum install git
Otras distribuciones [Download Git for Linux/Unix][gitLinux]
- Para distribuciones basadas en Debian/Ubuntu
-
Windows
La última versión de 32bit se puede descargar [Click Here][gitWindows32bit]
Para otras descargas, puedes hacerlo desde [Dowload git for Windows][gitWindows]
-
-
Python
IMPORTANTE!!! Trabajaremos sobre la terminal.
-
Clonamos el repositorio
git clone https://github.com/mouredev/Hello-Python.git
-
Nos ubicamos en el directorio donde esta el backend
cd /Hello-Python/Backend/FasAPI/ -
Comprobamos la versión de Python, en mi caso tengo la versión 3.10
python3 --version
-
Comprobamos las liberías y versiones instaladas, con alguno de los comandos.
python3 -m pip list
pip list
pip freeze
Veremos como resultado todas las librerías instaladas y sus respectivas versiones.
-
Creamos nuestro entorno virtual, para ello utilizaremos la siguiente sintaxis
python3 -m venv NOMBRE_DIRECTORIO_VIRTUAL
Ejecutamos el comando para crear un directorio llamado venv (De esta manera automáticamente se incluira en el git ignore, puedes llamarlo como desees, pero deberás incluir el directorio manualmente dentro del archivo .gitignore)
python3 -m venv venv
Esto nos creará un directorio donde se instalará todo lo que necesitemos para el proyecto.
-
Para activar el entorno virtual necesitaremos activarlo mediante el siguiente comando:
source NOMBRE_DIRECTORIO_VIRTUAL/bin/activateEn nuestro caso utilizaremos el siguiente comando
source venv/bin/activatePara desactivar utilizamos
deactivate
IMPORTANTE Veremos delante de nuestro prontuario el nombre del directorio donde hemos creado el entorno virutal. Así sabremos siempre si esta activado o no. (venv) ➜ Hello-Python git:(Python-venv) ✗.
7. Repetimos el paso 4 y comprobamos las versiones instaladas (Dentro del entorno virtual).
8. Instalamos las librerías utilizadas en el proyecto (Dentro del entorno virtual):
``` sh
pip install "fastapi[all]"
```
-
Volvemos a repetir el paso 4 y comprobamos las versiones instaladas (Dentro del entorno virtual).
Podemos ver las diferencias revisando los archivos requirements-global.txt versus requirements.txt
En este caso puede parecer sencillo instalar todas las librerías que necesitamos, ya que solo nos bastaría con el comando pip install "fastapi[all]" , pero sin embargo es probable que otros proyectos mas grandes requieran mas librerías y trabajar con versiones específicas.
A diferencia de otras tecnologías como NodeJS, que maneja sus paquetes y versiones mediante el archivo package.json que se crea una vez que inicializamos un proyecto. En python deberemos hacerlo de manera manual, lo haremos mediante la creación del archivo requirements.txt lo haremos siempre dentro del entorno virtual, podemos hacerlo en los siguientes pasos:
-
Para crear el archivo
requirements.txtpython3 -m pip freeze > requirements.txtSi recordamos
pip freezenos permitía ver todas las librerías instaladas. Al utilizar>le estamos diciendo, el resultado depython3 -m pip freezesácalo enrequirements.txt. -
Si abrimos el archivo
requirements.txtveremos todas librerías y versiones de python utilizadas en el proyecto.
- IMPORTANTE!!!! Si ejecutamos estos comandos, fuera del entorno virtual nos recopilará todas las librerías en nuestro ordenador de manera global. Puedes probarlo para ver las diferencias entre instalación Global vs Entorno Virtual
- Para instalar necesitaremos tener el archivo
requirements.txten la raíz del proyecto y tener activado el entorno virtual.Este comenzará a instalar todas las dependencias dentro de nuestro entorno virtual.python3 -m pip install -r requirements.txt
- Una vez finalizada podemos comprobar, con
python3 -m pip list
Creado bajo licencia Apache-2.0 visita aquí para mas información licencia.
Project Link: Hello-Python

