Paquetes de Python: ¿Cómo crearlos e importarlos?

En este artículo, aprenderá a dividir su código base en módulos limpios y eficientes utilizando paquetes de Python. Además, aprenderá a importar y utilizar paquetes propios o de terceros en su programa Python.

Video: Paquetes de Python: Organice su código

¿Qué son los paquetes?

No solemos almacenar todos nuestros archivos en nuestra computadora en la misma ubicación. Usamos una jerarquía de directorios bien organizada para facilitar el acceso.

Los archivos similares se guardan en el mismo directorio, por ejemplo, podemos mantener todas las canciones en el directorio " música ". De manera análoga a esto, Python tiene paquetes para directorios y módulos para archivos.

A medida que nuestro programa de aplicación crece en tamaño con muchos módulos, colocamos módulos similares en un paquete y diferentes módulos en diferentes paquetes. Esto hace que un proyecto (programa) sea fácil de administrar y conceptualmente claro.

De manera similar, como un directorio puede contener subdirectorios y archivos, un paquete de Python puede tener subpaquetes y módulos.

Un directorio debe contener un archivo nombrado __init__.pypara que Python lo considere como un paquete. Este archivo se puede dejar vacío, pero generalmente colocamos el código de inicialización para ese paquete en este archivo.

Aquí hay un ejemplo. Supongamos que estamos desarrollando un juego. Una posible organización de paquetes y módulos podría ser la que se muestra en la siguiente figura.

Estructura del módulo del paquete en la programación de Python

Importando módulo de un paquete

Podemos importar módulos de paquetes usando el operador punto (.).

Por ejemplo, si queremos importar el startmódulo del ejemplo anterior, se puede hacer de la siguiente manera:

 import Game.Level.start

Ahora, si este módulo contiene una función nombrada select_difficulty(), debemos usar el nombre completo para hacer referencia a ella.

 Game.Level.start.select_difficulty(2)

Si esta construcción parece larga, podemos importar el módulo sin el prefijo del paquete de la siguiente manera:

 from Game.Level import start

Ahora podemos llamar a la función simplemente de la siguiente manera:

 start.select_difficulty(2)

Otra forma de importar solo la función requerida (o clase o variable) de un módulo dentro de un paquete sería la siguiente:

 from Game.Level.start import select_difficulty

Ahora podemos llamar directamente a esta función.

 select_difficulty(2)

Aunque es más fácil, este método no se recomienda. El uso del espacio de nombres completo evita confusiones y evita la colisión de dos nombres de identificadores iguales.

Al importar paquetes, Python busca en la lista de directorios definidos en sys.path, similar a la ruta de búsqueda del módulo.

Articulos interesantes...