Skip to content

Latest commit

 

History

History
 
 

README.md


FastAPI - Ejemplo de Uso con Entornos virtuales de Python

🎯 Desarrollo de Python con entornos virtuales
Archivos »
Reportar un bug · Asignar una feature

Table of Contents
  1. Introducción
  2. Entornos virtuales
  3. Primeros Pasos
  4. Licencia
  5. Contacto

Introducción

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.

(back to top)

Backend

Para comenzar el backend esta creado con:

  • Python
  • FastApi

(back to top)

Qué es un entorno virtual?

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.

Ventajas

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.

Global vs Entorno Virtual

Para poder explicar las diferencias, podemos apreciar la comparación entre ambas imagenes

Global
Virtual

(back to top)

Primeros pasos

Crear un entorno virtual es relativamente sencillo, para ello necesitaremos tener instalado:

  • Python
  • Git
  • Tu IDE Favorito

Pre requisitos

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]

    • 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

    • macOS

      • Última versión here
      • Otras versiones here
    • Windows

      • Última versión here
      • Otras versiones here
    • Linux/Unix

      • GZipped source tarball here
      • XZ source tarball here

Creando Entornos Virtuales

IMPORTANTE!!! Trabajaremos sobre la terminal.

  1. Clonamos el repositorio

    git clone https://github.com/mouredev/Hello-Python.git
  2. Nos ubicamos en el directorio donde esta el backend

    cd /Hello-Python/Backend/FasAPI/
  3. Comprobamos la versión de Python, en mi caso tengo la versión 3.10

    python3 --version 
  4. 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.

  5. 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.

  6. Para activar el entorno virtual necesitaremos activarlo mediante el siguiente comando:

    source NOMBRE_DIRECTORIO_VIRTUAL/bin/activate

    En nuestro caso utilizaremos el siguiente comando

    source venv/bin/activate

    Para 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]"
```
  1. 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

Manejando e instalando librerías

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:

Crear requirements.txt

  1. Para crear el archivo requirements.txt

    python3 -m pip freeze > requirements.txt

    Si recordamos pip freeze nos permitía ver todas las librerías instaladas. Al utilizar > le estamos diciendo, el resultado de python3 -m pip freeze sácalo en requirements.txt.

  2. Si abrimos el archivo requirements.txt veremos 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

Instalar con requirements.txt

  1. Para instalar necesitaremos tener el archivo requirements.txten la raíz del proyecto y tener activado el entorno virtual.
    python3 -m pip install -r requirements.txt
    Este comenzará a instalar todas las dependencias dentro de nuestro entorno virtual.
  2. Una vez finalizada podemos comprobar, con
    python3 -m pip list

(back to top)

License

Creado bajo licencia Apache-2.0 visita aquí para mas información licencia.

(back to top)

Contact

Twitter GitHub
Project Link: Hello-Python

(back to top)