Advertisement
  1. Code
  2. Python

Cómo utilizar los paquetes de Python

Scroll to top
Read Time: 8 min

() translation by (you can also view the original English article)

Los paquetes de Python te permiten desglosar sistemas grandes y organizar tus módulos de una manera consistente que tú y otras personas pueden usar y reutilizar de manera eficiente. El lema de Python de "Baterías incluidas" significa que viene precargado con muchos paquetes útiles en la biblioteca estándar.

Pero también hay muchos paquetes increíbles de terceros que puedes aprovechar. En este tutorial, aprenderás todo lo que necesitas saber sobre qué paquetes son exactamente, cómo importar módulos desde paquetes, explorar el paquete integrado en la biblioteca estándar de Python e instalar paquetes de terceros.

¿Qué son los paquetes?

Antes de que podamos hablar de los paquetes, hablemos de los módulos. Los módulos son los archivos de origen con extensión *.py donde tú (y todos los demás) ponen las funciones y clases que componen tu programa. Los paquetes son la manifestación del concepto de espacios de nombres jerárquicos de Python. Para citar el Zen de Python:

"Los espacios de nombres son una gran idea, ¡hagamos más de eso!"

Para ver todo el Zen de Python, escribe import this en una sesión interactiva de Python:

1
import this
2
3
The Zen of Python, by Tim Peters
4
5
6
7
Beautiful is better than ugly.
8
9
Explicit is better than implicit.
10
11
Simple is better than complex.
12
13
Complex is better than complicated.
14
15
Flat is better than nested.
16
17
Sparse is better than dense.
18
19
Readability counts.
20
21
Special cases aren't special enough to break the rules.
22
23
Although practicality beats purity.
24
25
Errors should never pass silently.
26
27
Unless explicitly silenced.
28
29
In the face of ambiguity, refuse the temptation to guess.
30
31
There should be one-- and preferably only one --obvious way to do it.
32
33
Although that way may not be obvious at first unless you're Dutch.
34
35
Now is better than never.
36
37
Although never is often better than *right* now.
38
39
If the implementation is hard to explain, it's a bad idea.
40
41
If the implementation is easy to explain, it may be a good idea.
42
43
Namespaces are one honking great idea -- let's do more of those!

Los espacios de nombres ayudan a organizar el código y evitar conflictos de nomenclatura. Esto es fundamental cuando varias personas trabajan juntas o cuando se utilizan paquetes desarrollados por otras personas.

Mientras que los paquetes representan una jerarquía de subpaquetes y módulos, que son archivos, la jerarquía no tiene que basarse en el sistema de archivos donde los paquetes y subpaquetes son directorios y subdirectorios. Es mucho más flexible que eso.

Paquete de ejemplo

Revisemos un paquete llamado "ansible". No es un paquete de la biblioteca estándar. Verás más adelante cómo buscar e instalar paquetes de terceros. Ahora, revisaremos la estructura de archivos del directorio.

Los paquetes se instalarán normalmente en el directorio de paquetes del sitio del intérprete de Python, que se ubicará en algún lugar (según la versión, el sistema operativo y la distribución) debajo de "lib". En el Mac, para Python 2.7 se ubicará en "<interpreter root>/lib/python2.7/site-packages". Así es como se organiza el paquete "ansible":

1
tree ansible -L 1
2
3
ansible
4
5
├── __init__.py
6
7
├── cli
8
9
├── compat
10
11
├── config
12
13
├── constants.py
14
15
├── errors
16
17
├── executor
18
19
├── galaxy
20
21
├── inventory
22
23
├── module_utils
24
25
├── modules
26
27
├── parsing
28
29
├── playbook
30
31
├── plugins
32
33
├── template
34
35
├── utils
36
37
└── vars
38
39
40
41
15 directories, 2 files
42

Hay dos módulos y 15 directorios. Cada directorio es un subpaquete del paquete principal. Mirando dentro del directorio ansible/utils, podemos ver que contiene módulos adicionales e incluso un subpaquete más:

1
tree ansible/utils -L 1
2
3
ansible/utils
4
5
├── __init__.py
6
7
├── boolean.py
8
9
├── cmd_functions.py
10
11
├── color.py
12
13
├── debug.py
14
15
├── display.py
16
17
├── encrypt.py
18
19
├── hashing.py
20
21
├── listify.py
22
23
├── module_docs.py
24
25
├── module_docs_fragments
26
27
├── path.py
28
29
├── shlex.py
30
31
├── unicode.py
32
33
└── vars.py
34
35
36
37
1 directory, 14 files

La ruta de búsqueda

Al importar un módulo, Python pasará por un algoritmo de búsqueda basado en la ruta de búsqueda, que es una lista de directorios para iniciar la búsqueda. La ruta de búsqueda es una lista de directorios disponibles a través de sys.path y puedes manipularla dinámicamente (agregar, quitar o mover elementos en la ruta de búsqueda). El directorio de paquetes de sitio siempre está ahí.

Para importar el módulo path.py desde ansible/utils, deberás usar el siguiente comando:

import ansible.utils.path

Si también quieres usar el módulo estándar os.oath, usarás el siguiente comando:

import os.path

Ahora puedes utilizar uno o ambos módulos de ruta de acceso sin conflictos debido a la diferencia de espacio de nombres al que pertenecen.

Exploración de la biblioteca estándar

La biblioteca estándar tiene muchos paquetes. Vale la pena explorarlo siempre que necesites realizar alguna tarea y no estés seguro de cómo. Existe una probabilidad muy alta de que para cualquier tarea de propósito general como matemáticas, integración de shell, integración de sistema operativo, manipulación de cadenas, redes y formatos de archivo comunes, haya un paquete bien diseñado, de buen rendimiento y probado en la biblioteca estándar.

Realmente puedes confiar en los paquetes de bibliotecas estándar porque es muy importante ingresar a la biblioteca estándar. O bien el paquete fue diseñado por los desarrolladores principales de Python o fue muy revisado y a menudo muy utilizado en el campo como una biblioteca de terceros antes de convertirlo en la biblioteca estándar.

Estos son todos los paquetes de la biblioteca estándar organizados por tema.

PyPI

La biblioteca estándar es increíble, pero a menudo necesitarás alguna funcionalidad especial que no es estándar. No significa que tengas que escribirla desde cero. Python tiene una comunidad vibrante y activa que desarrolla y comparte libremente mucho código. Ingresa PyPI: el índice del paquetes de Python. PyPI aloja todos los paquetes disponibles públicamente y proporciona una ventanilla única para navegar a través de ellos.

Navegación por PyPI

PyPI organiza los paquetes en un índice navegable. Puedes navegar y buscar por tema, entorno, framework, desarrollo, estado, público objetivo, licencia, lenguaje natural, lenguaje de programación (sí, hay paquetes de Python que admiten muchos lenguajes de programación) y sistema operativo.

También hay una distinción entre los paquetes de Python 2 y Python 3, y puedes ver qué tan popular es un paquete por el número de descargas recientes. Por ejemplo, el paquete ansible está disponible en PyPI, y aquí están sus metadatos:

1
Downloads (All Versions):
2
3
5528 downloads in the last day
4
5
72037 downloads in the last week
6
7
289967 downloads in the last month
8
9
Author: Ansible, Inc.
10
11
Home Page: https://ansible.com/
12
13
Bug Tracker: http://github.com/ansible/ansible/
14
15
License: GPLv3
16
17
Categories
18
19
Development Status :: 5 - Production/Stable
20
21
Environment :: Console
22
23
Intended Audience :: Developers
24
25
Intended Audience :: Information Technology
26
27
Intended Audience :: System Administrators
28
29
License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
30
31
Natural Language :: English
32
33
Operating System :: POSIX
34
35
Programming Language :: Python :: 2.6
36
37
Programming Language :: Python :: 2.7
38
39
Topic :: System :: Installation/Setup
40
41
Topic :: System :: Systems Administration
42
43
Topic :: Utilities
44
45
Package Index Owner: James.Laska, jimi, ansible
46
47
Package Index Maintainer: mpdehaan, badger
48
49
DOAP record: ansible-2.0.0.2.xml
50

Instalación de paquetes

Hay dos formas de instalar paquetes desde PyPI. Puedes descargar el paquete y luego ejecutar python setup.py install. Pero la forma moderna es utilizar pip, setuptools wheel. Pip son las siglas de Pip Installs Packages (sí, es una de esas siglas) y es tu interfaz para la instalación. Si tienes Python 2 >=2.7.9 o Python 3 >=3.4 instalado desde python.org, ya tendrás pip y setuptools, pero tendrás que actualizar a la última versión: pip install -U pip setuptools o python -m pip install -U pip setuptools en Windows.

Usa pip para instalar wheel: pip install wheel.

Si usas una versión anterior de Python, considera la posibilidad de actualizar. Si no puedes hacerlo, deberás instalar pip, setuptools y wheel por tu cuenta. Consulta las instrucciones.

Los paquetes de Python siempre se instalan en un entorno. Una práctica común que no cubriré aquí es usar entornos virtuales para administrar múltiples instalaciones independientes de Python con diferentes intérpretes y/o diferentes conjuntos de paquetes instalados.

Mejores prácticas

La autoridad de empaquetado de Python proporciona mucha orientación sobre las mejores prácticas en torno al empaque. Esto es importante porque es un área de desarrollo activo y las recomendaciones evolucionan rápidamente.

Además, si quieres hacer algo especial como instalar paquetes desde repositorios alternativos en lugar de PyPI o usar pip de una manera más sofisticada, encontrarás excelentes discusiones y consejos prácticos.

Conclusión

Cuando eres un principiante de Python, aprendes el lenguaje principal y te diviertes jugando con él. Muy pronto, descubres la biblioteca estándar y, a medida que adquieres más experiencia, te beneficias cada vez más de su riqueza.

La siguiente etapa en tu evolución como Pythonista es incorporar la enorme maravilla que la comunidad de Python ha puesto en PyPI en tus sistemas. Los paquetes como la unidad de implementación de código Python reutilizable habilitan este ecosistema.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.