Paquetes
Los paquetes son similares a los módulos pero no son componentes oficiales de Python. Además de la importación, los módulos requieren instalación previa para su uso.
Instalación
PIP y Pypi
PIP es el instalador de Paquetes de Python. Se instala automáticamente con el intérprete de Python.
Primeros comandos de PIP:
pip install pip # instalar PIP (normalmente innecesario)
pip --version # version PIP actual
pip install --upgrade pip # actualizar PIP
PyPi es el repositorio oficial para obtener y publicar los paquetes. Sitio oficial de PyPi
Instalación de paquetes
Comandos útiles para manejar paquetes:
pip install paquete # instalar paquete (más reciente)
pip show paquete # mostrar data del paquete
pip uninstall paquete # desinstalar paquete
pip list # enumerar paquetes instalados
pip install paquete==? # consultar versiones online del paquete
pip install paquete==version # instalar version especificada
pip install paquete>=version # instalar version especificada o más reciente
# guardado en texto de paquetes actuales y su versión actual
pip freeze > requirements.txt
# instalacion desde archivo
pip install -r requirements.txt
Actualización de paquetes
Para actualizar los paquetes se puede usar el paquete auxiliar pip-review:
Ubicacion de paquetes locales:
Importación
El manejo de los paquetes ya instalados es idéntico al de los módulos.
Para usar el paquete se importa haciendo:
Si sólo se necesita usar algunas funciones (o submódulos) del paquete se usa:
A los paquetes también se les puede poner alias en el programa:
Ejemplo resumen: importando Rich (paquete de cosméticos para la consola).# alias para el paquete
import rich as r
r.print("[bold yellow]Textos enriquecidos!")
# sustitucion de funciones
from rich import print
print("[bold green]Funcion 'print' sustituida")
# renombrado funciones
from rich import print as rprint
rprint("[bold cyan]Funcion 'print' renombrada")
Crear paquetes
Para crear un paquete se puede crear una carpeta con el nombre del paquete e introducir: - Un archivo vacío llamado '__init__.py' dentro de cada subdirectorio incluido dentro del paquete; - Uno (o varios) archivos de Python con las funciones , constantes etc añadidos; - Un archivo 'setup.py' para crear el archivo comprimido con el paquete, el cual tendrá terminación zip en Windows ó tar.gz en GNU/Linux.
El proceso se explica más facilmente mediante ejemplos:
-
Supongamos la creación de un paquete llamado "mipak" compuesto por un único script. Para ello se colocan en un mismo directorio los siguientes tres archivos:
__init__.py # archivo vacío mipak.py # archivo con todo el contenido del paquete: funciones, clases, etc setup.py # archivo instalacion
El archivo de Python setup.py tendrá todas las configuraciones pertinentes:
El paquete comprimido se crea ejecutando el archivo de setup con la opcion sdist: Se creará un archivo comprimido (zip en Windows, tar.gz en Linux) con todo el contenido del paquete. Éste se encuentra en el subdirectorio /dist.# archivo 'setup.py' aledaño al script 'mipak.py' from setuptools import setup setup( name="mipak", # nombre dek paquete, se usará para instalar e importar version="0.3", # numero de version, útil para gestionar las actualizaciones # info para la publicación online (opcional) description="Paquete con script único", author="Yo", author_email="yo@miserver.yo", url="http://miurl.com", # informacion de la composicion (importante) packages=['.'], # Ruta del directorio del paquete scripts=['mipak.py'] # Nombre script -- DEBE COINCIDIR con el nombre de paquete )
La instalación local del paquete se hará con el comando pip install. En el ejemplo:
Para poder usar este módulo en los scripts la importación se hace como: -
Tómese por referencia el ejemplo online de Hektorprofe de un paquete con dos submódulos:
A este paquete le corresponde un 'setup.py' como el siguiente:paquete/ __init__.py # archivo vacío hola/ __init__.py # archivo vacío saludos.py __init__.py # archivo vacío adios/ __init__.py # archivo vacío despedidas.py setup.py # archivo instalacion
Los pasos siguientes son empaquetar e instalar, tal como antes: En este caso la importación deberá dar cuenta de toda la ruta de archico. Por ejemplo: 3. Si del ejemplo previo se eliminaran las subcarpetas pero se dejaran ambos scripts: al paquete le correspondería un 'setup.py' como el siguiente: El empaquetado e instalacion son analogos al caso previo: Y la importación queda como:from setuptools import setup setup( name="paquete", version="0.1", description="Este es un paquete de ejemplo", packages=['paquete','paquete.hola','paquete.adios'], # Rutas del directorio y subdirectorios scripts=[] # queda vacío )
Links útiles:
https://docs.hektorprofe.net/python/modulos-y-paquetes/paquetes/