26 puntos por geniuskey 2024-07-14 | 5 comentarios | Compartir por WhatsApp

Buenas prácticas modernas para el desarrollo con Python

Las buenas prácticas modernas de Python de Stuart Ellis abordan puntos importantes a considerar al desarrollar con Python. Los temas principales son los siguientes:

Uso de Python

  • Evitar usar el Python integrado en el sistema operativo: el Python incluido en el sistema operativo puede ser una versión antigua.
  • Instalar Python con herramientas que soporten múltiples versiones: usar herramientas como pyenv o mise.
  • Usar la versión más reciente de Python: usar la versión estable más reciente para obtener parches de seguridad y mejoras de rendimiento.
  • Usar pipx para ejecutar aplicaciones de desarrollador: ejecutar aplicaciones en entornos aislados mediante pipx.
  • Usar herramientas de proyecto: se recomiendan PDM, Hatch, Mise y Rye.

Desarrollo de proyectos en Python

Sintaxis del lenguaje

  • Usar type hints: PEP 484, PEP 526.
  • Formatear cadenas con f-strings: PEP 498.
  • Usar objetos datetime con reconocimiento de zona horaria: PEP 615.

Diseño de aplicaciones

  • Usar logging en lugar de print().
  • Usar el formato TOML para la configuración: PEP 680.
  • Usar I/O asíncrona solo cuando sea necesario.

Bibliotecas

  • Procesar la entrada de línea de comandos con argparse.
  • Manejar rutas de archivos y directorios con pathlib.
  • Usar os.scandir() en lugar de os.listdir() por ser más rápido y eficiente: PEP 471.
  • Usar subprocess al ejecutar comandos externos: PEP 324.
  • Usar httpx en lugar de requests como cliente web.

Buenas prácticas de proyecto

Para más detalles, consulta el artículo completo.
.
.

Resumen de la discusión en Hacker News sobre Python Modern Practices

En la discusión de Hacker News sobre Python Modern Practices, los usuarios compartieron opiniones sobre diversas herramientas y metodologías:

  1. Recomendación de usar UV: usar UV es rápido y fácil, y además ofrece buen soporte cuando surgen problemas. by screye
  2. Mención de Rye: Rye permite fijar y descargar intérpretes de Python, y está prevista su integración con uv. by rat87
  3. Énfasis en la simplicidad de las herramientas actuales: con entornos de Mamba y pip básico no hay problemas, y no se siente necesidad de cambiar de herramientas. by helsinki
  4. Preferencia por herramientas básicas: con pip, venv y virtualenvwrapper se puede resolver la mayoría de los problemas. by throwadobe
  5. Defensa del uso de Pipenv: Pipenv se ha usado como una solución completa, y no está claro por qué no se usa más ampliamente. by routerl
  6. Problemas de Poetry: Poetry resultó decepcionante por problemas como no poder agregar identificadores de versión de commits de Git. by alisonatwork
  7. Conda y Mamba: Conda es mucho más potente para la gestión de dependencias, y Mamba es más rápido. by wanderingmind
  8. Problemas de packaging: los problemas de empaquetado en Python se deben en gran parte a razones sociales y seguirán existiendo. by jampekka
  9. Propuesta como alternativa a Pyenv: Mise es más rápido que Pyenv y también soporta proyectos de Node. by odie5533
  10. Modelos de Pydantic y dataclasses: los modelos de Pydantic tienen validación potente pero son lentos, mientras que las dataclasses son ligeras y eficientes. by martinky24

Para más detalles, consulta la discusión en Hacker News.

5 comentarios

 
kaydash 2024-07-15

No hay contenido sobre la reducción de peso de las bibliotecas.
Usar un env virtual de miniconda3 y eliminar las bibliotecas no utilizadas para distribuirlo de forma portable garantizó un mejor rendimiento en sistemas de procesamiento distribuido como yarn.

 
savvykang 2024-07-15

¿Por qué habría que usar pip-tools o uv? No veo ninguna base para afirmar que sean modernos o buenos.

 
savvykang 2024-07-15

Parece que existe el problema de que, con el comportamiento actual de pip, no se puede especificar la versión de compilación en la razón por la que se deben incluir hashes en los especificadores de dependencias (dependency specifier) de pip. Una guía que solo enumera directrices sin ese contexto no parece muy convincente.

 
jwseo 2024-07-16

¿Qué suelen usar principalmente??

 
savvykang 2024-07-16

Antes, trabajaba solo con pip freeze; elegía únicamente bibliotecas compatibles con Windows/Linux y hasta ahora no he tenido problemas causados por cambios en la versión de parche. Aun así, ahora que ya conozco el problema entiendo la necesidad, pero por ahora planeo considerar usar pip-tools o uv cuando estén un poco más maduros.