Herramientas útiles de Python

Amigos, buenas noches! Tenemos buenas noticias, reclutamiento abierto en un nuevo grupo en el curso "Python Developer" . El grupo comienza ya a principios de julio, y ahora, de acuerdo con una tradición establecida, estamos compartiendo una traducción útil preparada para los estudiantes de este curso.



Cuando comienza a aprender Python, alguien le explica que puede agregar su carpeta de origen a la variable de entorno PYTHONPATH y luego su código puede importarse desde otros directorios. Muy a menudo, el explicador se olvida de decir que, en la mayoría de los casos, es una mala idea. Algunas personas descubren esto en Internet, otras simplemente lo entienden de primera mano. Pero demasiadas personas (especialmente los programadores sin experiencia) piensan que no puede haber otras alternativas.

Este artículo es principalmente para ellos, porque incluso si sabe que existe una alternativa, no siempre es fácil aceptarlo y comenzar a usarlo. Las herramientas de Python son confusas porque son una gran cantidad de software construido sobre otro, con muchas superposiciones y problemas que resultan de esto. No es fácil entender cómo usar estas herramientas correctamente en su proyecto.

Por esta razón, decidí escribir este artículo y considerar las herramientas más populares para averiguar cuándo y dónde se usan y qué tareas resuelven. Trataré de explicar con los dedos cómo usar cada una de estas herramientas. Si la herramienta está en esta lista, usted, como pythonist, necesita al menos saber sobre su existencia. Solo hablaré sobre esas herramientas que se pueden aplicar a cualquier proyecto o flujo de trabajo, y debe recordarlas cuando comience un nuevo proyecto. Sin embargo, esto no significa que deba usar todas las herramientas presentadas en cada uno de sus proyectos. No es necesario sobrecargar el proyecto con herramientas, en algunos casos esto puede complicar su soporte.

Herramientas basicas


Herramientas de configuración


Setuptools es la forma estándar de crear paquetes en Python. Trabaja en cualquier lugar y hace bien su trabajo.

Por qué : cree archivos egg, zip o wheel desde la fuente, defina metadatos para su proyecto, trabaje en conjunto y estandarice el código.
Cuando se usa : siempre cuando escribes código que debería ejecutarse en la máquina de otra persona.
Alternativas : Poesía, Flit

virtualenv


Virtualenv es un administrador de entorno virtual. Dichos sandboxes son python independientes con un conjunto específico de paquetes preinstalados. Usar virtualenv significa que no necesita instalar paquetes en el sistema python de forma predeterminada.

Por qué : separación de dependencias, soporte para diferentes versiones de python por un sistema, fácil reubicación de dependencias.
Cuando se usa : necesita escribir código, y para esto necesita una versión de Python diferente de la versión predeterminada de su sistema Python.
Alternativas : Docker o algo similar.

Pip


Pip es el administrador de paquetes más común en python. Le permite instalar paquetes locales o remotos en su entorno virtual o sistema Python.

Para qué : instalar y eliminar paquetes, rastrear las versiones de paquetes que usa.
Cuando se usa : siempre.
Alternativas : Poesía, Conda

Creación y distribución de paquetes.


Para una mirada más cercana, python.org tiene una página separada: packaging.python.org

distutils


distutils es el precursor de setuptools. Este último utiliza activamente la funcionalidad distutils, por lo que a menudo es necesario interactuar con esta herramienta. Distutils no es exactamente la herramienta que debe tener en su arsenal, pero debe saber cómo encaja en el panorama general.

Pypi


Pypi o Python Package Index es un gran repositorio que contiene todos sus módulos favoritos de Python. Por ejemplo, el mismo pip toma compilaciones de paquetes desde allí.

Por qué : para publicar su código.
Cuando se usa : cuando hay un paquete que desea mostrar a la comunidad.

Pypiserver


Pypiserver es una de las implementaciones de la API de índice de paquete utilizada por Pypi. Puede crear su propio repositorio, por ejemplo, para toda su empresa y publicar paquetes sin hacer lanzamientos públicos.

Por qué : cree sus propios repositorios dentro de la organización.
Cuando se usa : cuando su código no necesita publicidad, pero se necesita un control total sobre él.
Alternativas : Almacén (utilizado por Pypi), djangopypi

Poesía


Poetry es un sistema de administración de paquetes alternativo que reemplaza las herramientas de configuración, pip y algunas otras herramientas creadas en base a ellas. Este es un intento de redefinir completamente cómo funciona el sistema de paquetes en Python. Hasta la fecha, la poesía tiene muchas críticas positivas, pero no es la herramienta más común.

Por qué : procesamiento y distribución de paquetes, gestión de dependencias, prevención de problemas para resolver dependencias.
Cuándo usarlo : cuando está planeando un nuevo proyecto y no tiene miedo de usar herramientas altamente especializadas.
Alternativas : Pipenv

Pipenv


Pipenv , como Poetry, es una herramienta para estructurar dependencias y configurar proyectos de Python de una manera más sensata. Con Pipfile, gestiona las dependencias de su proyecto y garantiza la coherencia y la facilidad de uso.

Por qué : procesamiento y distribución de paquetes, gestión de dependencias.
Cuando se usa : necesita una herramienta como Poesía que causará menos preguntas.
Alternativas : poesía.

La documentación


Esfinge


Sphinx es una herramienta para crear documentación. Fue creado originalmente para manejar la documentación de Python, pero se ha convertido en una herramienta común. Es la opción más común para proyectos de Python.

Por qué : cree documentos PDF o HTML utilizando un lenguaje de marcado de fuentes reStructuredText.
Cuando se usa : cuando su proyecto, API o código requiere documentación externa.
Alternativas : Docutils, Doxygen

autodoc


autodoc es una extensión fundamental para Sphinx que le permite crear archivos reStructuredText a partir del código fuente de Python con firmas para cada clase, función, módulo, etc.

Por qué : documentar su código o API.
Cuando se usa : de hecho, cada vez que usa Sphinx.
Alternativas : autosummary

Prueba


py.test


py.test : en mi opinión, es el mejor paquete para probar en Python. Tiene muchas funciones, aunque no todas se abren correctamente, por lo que tomará algún tiempo buscar todas las posibilidades que ofrece py.test.

Por qué : probar tu código.
Cuando se usa : siempre cuando eres demasiado vago para probar manualmente.
Alternativas : test unitario, nariz

Hipótesis


La hipótesis es una herramienta para probar propiedades individuales. En resumen, genera scripts de prueba aleatorios de acuerdo con sus especificaciones hasta que encuentra un escenario donde la prueba falla. Tómese un tiempo para aprender los principios antes de comenzar a usar esta herramienta.

Por qué : pruebas de código, especialmente procesamiento de datos.
Cuándo usarlo : cuando necesita probar una lógica no trivial con una amplia gama de valores de entrada (números, cadenas, datos estructurados).

tox


tox es un administrador de entorno virtual para pruebas. Esto significa que puede configurarlo para ejecutar pruebas en entornos virtuales limpios y personalizables para garantizar que su código pueda funcionar en diversas condiciones.

Por qué : para el código que debe ejecutarse en diversas condiciones y entornos. También útil para CI.
Cuándo usarlo : cuando necesite que su código sea compatible con diferentes versiones de Python, ejecute en diferentes entornos y en diferentes sistemas operativos.
Alternativas : scrips de bash, canalizaciones de CI

Otras herramientas


pyenv


pyenv es el administrador de versiones de python. Su objetivo es simplificar el flujo de trabajo local de los desarrolladores cuando trabajan con múltiples versiones.

Por qué : lanzar varios proyectos con diferentes versiones de Python.
Cuando se usa : debe trabajar con versiones globales de Python y tiene muchas de ellas.
Alternativas : gestión manual, virtualenv, poesía, pipenv

PyScaffold


PyScaffold es una herramienta para inicializar la estructura de un proyecto de manera estandarizada y proporcionar algunas de las herramientas enumeradas anteriormente sin tener que configurarlas manualmente. Muy flexible

Por qué : para cargar proyectos, trabajar con varios proyectos con las mismas herramientas y estructura.
Cuando se usa : siempre (si está familiarizado con esta herramienta, pero no intente usarla por primera vez cuando tenga prisa)
Alternativas : python-project-template, Cookiecutter

escama8


flake8 es uno de los linters más populares para Python. Ejecuta varios scripts para verificar que su código coincida con los requisitos de la Guía de estilo de Python ( PEP-8 ).

Para qué : verificar su proyecto para un buen estilo de escritura.
Cuando se usa : cada vez que alguien o usted debe leer su proyecto.
Alternativas : pylint

Negro


El negro formatea automáticamente el código. Esto significa que, en lugar de simplemente verificar que su código cumpla con los estándares, Black lo cambiará independientemente para que se ajuste.

Por qué : formateo automático de código.
Cuando se usa : cuando no tiene problemas para negarse a administrar su código manualmente.
Alternativas : autopep8, yapf

Eso es todo. Esperando sus comentarios ;-).

Source: https://habr.com/ru/post/456624/


All Articles