Cómo empezar un paquete

Desarrollo de paquetes en Python

James Fulton

Climate informatics researcher

¿Por qué crear un paquete?

  • Para reutilizar tu código más fácilmente
  • Para evitar copiar y pegar sin parar
  • Para mantener tus funciones al día
  • Para compartir tu código con otras personas
Desarrollo de paquetes en Python

Contenido del curso

Vas a crear un paquete completo y verás:

  • Estructura de archivos
  • Estructura de importaciones
  • Cómo hacer instalable tu paquete
  • Cómo añadir licencias y README
  • Estilo y tests unitarios para un paquete de calidad
  • Registro y publicación en PyPI
  • Uso de plantillas de paquetes
Desarrollo de paquetes en Python

Scripts, módulos y paquetes

  • Script: un archivo de Python que se ejecuta como python myscript.py

  • Paquete: un directorio con código Python para importar

    • p. ej., numpy
  • Subpaquete: un paquete más pequeño dentro de un paquete

    • p. ej., numpy.random y numpy.linalg
  • Módulo: un archivo de Python dentro de un paquete que contiene el código del paquete.

    • p. ej., ejemplo en las próximas 2 diapositivas
  • Librería: un paquete o un conjunto de paquetes

    • p. ej., la librería estándar de Python (math, os, datetime, ...)
Desarrollo de paquetes en Python

Árbol de directorios de un paquete

Árbol de directorios de un paquete simple

mysimplepackage/
|-- simplemodule.py
|-- __init__.py
  • Este directorio, llamado mysimplepackage, es un paquete de Python
  • simplemodule.py contiene todo el código del paquete
  • __init__.py marca este directorio como paquete de Python
Desarrollo de paquetes en Python

Contenido de un paquete simple

__init__.py

Archivo vacío

simplemodule.py
def cool_function():
    ...
    return cool_result

...

def another_cool_function():
    ...
    return another_cool_result

Archivo con funciones y código generalizados.

Desarrollo de paquetes en Python

Subpaquetes

Árbol de directorios de un paquete con subpaquetes

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
Desarrollo de paquetes en Python

¡Vamos a practicar!

Desarrollo de paquetes en Python

Preparing Video For Download...