Módulos y Paquetes

PythonBeginner
Practicar Ahora

Introducción

En este laboratorio, exploraremos cómo usar módulos y paquetes de Python para organizar y reutilizar código. Comenzaremos con ejemplos simples y construiremos gradualmente hacia ejemplos más complejos. Al final de este laboratorio, tendrás una comprensión sólida de cómo usar módulos y paquetes en tus propios proyectos.

Logros

  • Módulos de Python
  • Paquetes de Python
  • PyPI
Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel intermedio con una tasa de finalización del 79%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

¿Qué son los módulos y paquetes de Python?

Un módulo en Python es un archivo que contiene definiciones de funciones, clases y variables. Podemos usar módulos para dividir grandes programas en piezas más pequeñas y manejables. Los módulos también facilitan la reutilización de código en múltiples proyectos.

Un paquete es una colección de módulos. Los paquetes nos permiten agrupar módulos relacionados y acceder a ellos usando una notación de puntos simple.

Hay varios tipos de módulos y paquetes de Python:

  1. Módulos integrados: Estos son los módulos que vienen incluidos con el intérprete de Python y están disponibles para todos los programas de Python. Ejemplos de módulos integrados son math, os, sys y random.
  2. Módulos de la biblioteca estándar: Estos son los módulos que forman parte de la biblioteca estándar de Python, pero no están integrados en el intérprete. Se pueden importar y usar de la misma manera que los módulos integrados. Ejemplos de módulos de la biblioteca estándar son json, urllib, re y csv.
  3. Módulos de terceros: Estos son los módulos desarrollados y mantenidos por personas o organizaciones fuera del equipo de desarrollo central de Python. Se pueden importar y usar de la misma manera que los módulos integrados y de la biblioteca estándar, pero deben instalarse por separado. Hay muchos módulos de terceros disponibles, que abarcan una amplia variedad de temas y propósitos. Algunos ejemplos son numpy, pandas, requests y beautifulsoup4.
  4. Módulos locales: Estos son los módulos que se encuentran en el mismo directorio que el programa de Python que los está usando. Podemos importar módulos locales usando la declaración import y el nombre del módulo, sin especificar la ruta completa.
  5. Importaciones relativas: Estas son las importaciones relativas al paquete o módulo actual. Nos permiten importar módulos y paquetes que se encuentran en un directorio diferente al actual. Podemos usar importaciones relativas para importar módulos y paquetes que forman parte del mismo proyecto, pero están organizados en una estructura de directorios diferente.

En resumen, los módulos y paquetes de Python se pueden clasificar según de dónde provienen y cómo se acceden a ellos. Los módulos integrados y de la biblioteca estándar vienen incluidos con el intérprete de Python y están disponibles para todos los programas de Python, mientras que los módulos de terceros deben instalarse por separado. Los módulos locales y las importaciones relativas nos permiten importar módulos y paquetes que se encuentran en el mismo proyecto, pero en una estructura de directorios diferente.

A continuación, se muestra un ejemplo de cómo usar uno de los módulos integrados de Python, el módulo math.

Abra una nueva sesión del intérprete de Python y escriba el siguiente código:

python3
import math

## Calcula la raíz cuadrada de 16
x = math.sqrt(16)
print(x)  ## Salida: 4.0

## Calcula el seno de pi
y = math.sin(math.pi)
print(y)  ## Salida: 1.2246467991473532e-16

## Calcula el factorial de 5
z = math.factorial(5)
print(z)  ## Salida: 120

El módulo math es un módulo integrado de Python que proporciona funciones y constantes matemáticas. Algunas de las funciones disponibles en el módulo math son sqrt(), sin(), cos(), tan(), log(), exp() y factorial(). El módulo math también proporciona constantes como pi y e.

Podemos usar la declaración import para importar el módulo math y luego llamar a sus funciones y acceder a sus constantes en nuestro código.

En el ejemplo anterior, usamos la función sqrt() para calcular la raíz cuadrada de 16, la función sin() para calcular el seno de pi y la función factorial() para calcular el factorial de 5. También usamos la constante pi para representar el valor de pi en la llamada a la función sin().

Hay muchos otros módulos integrados de Python que proporcionan funciones y constantes útiles. Algunos ejemplos son el módulo os para interactuar con el sistema operativo, el módulo datetime para trabajar con fechas y horas y el módulo random para generar números aleatorios. Puede encontrar una lista completa de los módulos integrados de Python en la documentación.

Crear un módulo de Python

En este paso, crearemos un módulo de Python. Un módulo es un archivo que contiene código de Python.

A continuación, se muestra un ejemplo simple de cómo crear y usar un módulo de Python:

Primero, cree un nuevo archivo llamado my_module.py en la ruta /home/labex/project/. Este será nuestro archivo de módulo.

En el archivo my_module.py, defina una función llamada say_hello() que imprima un saludo en la consola:

def say_hello():
    print("Hello from my_module!")

Guarde el archivo.

Ahora, abra un nuevo archivo de Python (o ingrese al intérprete de Python) e importe el módulo my_module usando la declaración import:

import my_module

Para usar la función say_hello() del módulo my_module, podemos llamarla de la siguiente manera:

my_module.say_hello()  ## Salida: "Hello from my_module!"

¡Eso es todo! Hemos creado y usado con éxito un módulo de Python.

Excepción ImportError

Tenga en cuenta que cuando importamos un módulo, Python busca el archivo del módulo en el directorio actual, así como en cualquier directorio enumerado en la variable de entorno PYTHONPATH. Si el archivo del módulo no se encuentra, obtendremos una excepción ImportError.

Intentemos importar un módulo que no existe.

Abra una nueva ventana de terminal y cambie el directorio actual a /home/labex/:

cd /home/labex/

Ahora, abra un nuevo intérprete de Python e intente importar el módulo my_module:

python3
import my_module

Debería obtener una excepción ImportError:

ModuleNotFoundError: No module named'my_module'

Puede agregar un directorio a la variable de entorno PYTHONPATH agregando la siguiente línea a su archivo de Python:

import sys
## my_module.py se encuentra en el directorio /home/labex/project/
sys.path.append("/home/labex/project")

import my_module
my_module.say_hello()

Tenga en cuenta que la función sys.path.append() debe llamarse antes de la declaración import.

Crear un paquete de Python

En este paso, crearemos un paquete de Python. Un paquete es un directorio que contiene módulos de Python.

Vamos a mejorar el ejemplo del paso anterior.

Primero, cree un nuevo directorio llamado my_package en la ruta /home/labex/project/. Este será nuestro directorio de paquete.

Dentro del directorio /home/labex/project/my_package, cree un nuevo archivo llamado __init__.py. Este es un archivo especial que le dice a Python que el directorio my_package debe considerarse como un paquete.

Dentro del directorio my_package, cree un nuevo archivo llamado my_module.py. Este será nuestro archivo de módulo.

En el archivo my_module.py, defina una función llamada say_hello() que imprima un saludo en la consola:

def say_hello():
    print("Hello from my_module!")

Ahora, abra un nuevo archivo de Python (o ingrese al intérprete de Python) e importe el paquete my_package:

import my_package

Para usar la función say_hello() del módulo my_module, podemos llamarla de la siguiente manera:

my_package.my_module.say_hello()  ## Salida: "Hello from my_module!"

¡Eso es todo! Hemos creado y usado con éxito un paquete de Python con un módulo.

A continuación, se muestra la estructura de directorios de nuestro proyecto:

my_package/
├── __init__.py
└── my_module.py

Este ejemplo muestra cómo podemos crear un paquete y acceder a sus módulos usando la notación de puntos. El paquete my_package contiene el módulo my_module, y podemos acceder a la función say_hello() del módulo my_module llamando a my_package.my_module.say_hello().

En este contexto, my_package es un paquete de Python y my_module es un módulo de Python. Los paquetes nos permiten organizar nuestro código en una estructura jerárquica, lo que puede ser útil para proyectos más grandes con muchos módulos.

En resumen, la principal diferencia entre un paquete y un módulo es que un paquete es una colección de módulos que se pueden acceder usando una notación de puntos, mientras que un módulo es un archivo independiente que contiene definiciones de funciones, clases y variables.

Paquetes de terceros

Los paquetes de terceros de Python son paquetes desarrollados y mantenidos por personas o organizaciones fuera del equipo de desarrollo central de Python. Se pueden importar y usar de la misma manera que los módulos integrados y de la biblioteca estándar, pero deben instalarse por separado.

Hay muchos paquetes de terceros disponibles para Python, que abarcan una amplia variedad de temas y propósitos. Algunos ejemplos son numpy para el cálculo científico, pandas para el análisis de datos, requests para trabajar con solicitudes HTTP y beautifulsoup4 para la extracción de datos web.

La razón más importante por la que Python es tan popular es la abundancia de Paquetes de Terceros.

Para instalar un paquete de terceros, podemos usar el administrador de paquetes pip, que viene incluido con Python por defecto. Por ejemplo, para instalar el paquete requests, podemos ejecutar el siguiente comando:

pip install requests

También podemos usar otros administradores de paquetes como conda para instalar paquetes de terceros. Consulte Anaconda para obtener más información.

Una vez que el paquete está instalado, podemos importarlo y usarlo en nuestro código de Python. Por ejemplo, aquí es cómo podemos usar el paquete requests para enviar una solicitud HTTP y mostrar la respuesta:

python3
import requests

response = requests.get("https://www.example.com")
print(response.text)

Este código envía una solicitud HTTP GET a la URL https://www.example.com usando el paquete requests, y luego muestra el texto de la respuesta en la consola.

La función requests.get() envía una solicitud HTTP GET a la URL especificada y devuelve un objeto HTTPResponse que contiene los datos de la respuesta. El objeto de respuesta tiene varios atributos y métodos que nos permiten acceder y manipular los datos de la respuesta.

En este caso, el atributo response.text contiene el cuerpo de la respuesta como una cadena. Al llamar a print(response.text), estamos mostrando el cuerpo de la respuesta en la consola.

Los paquetes de terceros de Python son una parte importante del ecosistema de Python, ya que proporcionan soluciones listas para usar para tareas comunes y extienden la funcionalidad de Python. Pueden ahorrarnos tiempo y esfuerzo al proporcionar soluciones preconstruidas que podemos usar en nuestros proyectos, en lugar de tener que construir todo desde cero.

Además del tiempo y el esfuerzo ahorrados al usar paquetes de terceros, también pueden ayudarnos a escribir código más confiable y mantenible. Al usar paquetes bien probados y ampliamente utilizados, podemos aprovechar el trabajo de otros y centrar nuestro esfuerzo en resolver nuestro problema específico.

En general, los paquetes de terceros de Python son un recurso importante para extender la funcionalidad de Python y para resolver tareas comunes. Pueden ahorrarnos tiempo y esfuerzo, ayudarnos a integrarnos con otras herramientas y bibliotecas y contribuir a la confiabilidad y mantenibilidad de nuestro código.

Resumen

En este laboratorio, aprendimos cómo usar módulos y paquetes de Python para organizar y reutilizar código. Vimos cómo importar y usar módulos y paquetes en nuestros programas, y también aprendimos cómo crear nuestros propios paquetes. Al usar módulos y paquetes, podemos escribir código más limpio y mantenible.