Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gestor de dependencias. #17

Closed
MauronMP opened this issue Oct 31, 2022 · 2 comments
Closed

Gestor de dependencias. #17

MauronMP opened this issue Oct 31, 2022 · 2 comments

Comments

@MauronMP
Copy link
Owner

MauronMP commented Oct 31, 2022

Teniendo en cuenta #7, se necesita un gestor de dependencias como parte del objetivo 3.

Elección del gestor de dependencias.

Para qué se necesita un gestor de dependencias.

Como bien se menciona aquí

Dependency management is like your city’s sewage system. When it’s working well, it’s easy to forget that it even exists. The only time you’ll remember it is when you experience the agony induced by its failure.

Teniendo en cuenta el estándar de la estructura de los proyectos en Python y este ejemplo de estructura de proyectos.

La estructura que buscamos tener sería:

  • proyecto
    • pyproject.toml
    • README.md
    • proyecto/
      • init.py
    • tests/
      • init.py

Mejores prácticas para la gestión de dependencias de python.

  • Debe de ser estable en todos los entornos en los que se trabaje.
  • Debe de ser fácil de instalar, compilar y ejecutar.
  • Evitar el 'Dependency Hell', este concepto se asocia cuando se intenta resolver conflictos por dependencias. Esto ocurre cuando diferentes paquetes de Python tienen la misma dependencia, pero dependiendo de versiones distintas e incompatibles de un paquete compartido.
  • Creación de un fichero lock, para asegurar que las dependencias sigan fijadas a las versiones exactas en uso.
  • Tener todas las dependencias en un único fichero en lugar de tenerlo individualmente.
  • Seguir el estándar de PEP 518.
  • En este caso seguir el estándar PEP 621 para el fichero pyproject.toml

Gestores de dependencias.

  • PDM Instala y gestiona paquetes de manera similar a npm que no necesita crear un virtualenv. Soporta el PEP 582, sigue los estándares de python. Sistema flexible y potente. Cache de instalación centralizado como pnpm. De igual modo, a la hora crear un proyecto sigue el estándar y genera una estructura útil

  • hatch Es una herramienta útil para el aislamiento del entorno y destinado a administrar dependencias. Tiene un sistema de complementos que hace fácil su funcionalidad. Sistema de compilación estandarizado con compliaciones de manera predeterminada. Sigue el estándar de la estructura de proyectos.

  • poetry Es una herramienta de dependencia y gestión de python, usa sistema de archivos de bloqueo para compiladores. Garantiza que se esté usando un entorno virtual, por lo que evita errores de instalaciones globales. Puede declarar sus dependencias por medio de la shell o en el fichero pyproject.toml
    Las dependencias del proyecto se gestionan en el pyproject.toml, que se actualiza automáticamente cada vez que se ejecuta el comando de instalación de poetry. Genera del mismo modo un fichero lock. Tiende a ser más rápido. Sigue el estandar de la estructura de los projectos de python como se puede ver en este ejemplo a la hora de crear un proyecto con poetry, ya que genera un fichero .toml, Readme.md, directorio para los .py y otro para los test.

Se ha optado por poetry por:

  • Seguir el estándar de la 'Specifying Minimum Build System Requirements for Python Projects'.
  • Documentación oficial muy sencilla.
  • Mejor visión de las dependencias al usar un fichero(pyproject.toml).
  • Tiene un entorno virtual integrado.
  • Construcción sencilla.
  • Permite cambiar fácilmente entre versiones.
  • Rendimiento.
@MauronMP MauronMP added this to the [M1] Transformación de los datos por medio de algoritmos para obtener un perímetro de riesgo de incendio. milestone Oct 31, 2022
MauronMP added a commit that referenced this issue Oct 31, 2022
MauronMP added a commit that referenced this issue Oct 31, 2022
MauronMP added a commit that referenced this issue Oct 31, 2022
MauronMP added a commit that referenced this issue Nov 2, 2022
@JJ
Copy link

JJ commented Nov 2, 2022

Teniendo en cuenta #7, se necesita un gestor de tareas como parte del objetivo 3.

¿Tareas o dependencias?

@JJ
Copy link

JJ commented Nov 2, 2022

Estas descripciones de cada una de las herramientas, ¿en qué contribuyen a elegir una u otra? ¿O a que entiendas que hace cada una y cómo sirve a tu proyecto en particular?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants