2 - Conceptos basicos

Objetivo del tema

En este modulo comprenderas los elementos esenciales que administran pip y el ecosistema de Python: que es un paquete, donde se publica y como distinguir las fuentes de instalacion habituales dentro de PyPI.

2.1 ¿Que es un paquete en Python?

Un paquete es una unidad reutilizable que agrupa modulos, recursos y metadatos listos para ser instalados con pip. Puede ser un simple archivo .py, un directorio con un archivo __init__.py o una distribucion empaquetada para compartirla.

  • Las distribuciones modernas emplean el formato .whl (wheel) para entregar codigo precompilado o listo para copiarse.
  • Los paquetes incluyen un archivo de metadatos (por ejemplo METADATA o PKG-INFO) con la version, dependencias y mantenedores.
  • El gestor reconoce tanto paquetes puros de Python como aquellos que traen extensiones escritas en C, Rust u otros lenguajes.

Para pip no hay diferencia entre instalar una distribucion desarrollada por tu equipo o una publicada por terceros: ambas deben describirse correctamente para que la herramienta las registre.

2.2 Repositorio oficial PyPI (Python Package Index)

PyPI es el indice publico donde se publican y descargan la mayoria de los paquetes compatibles con pip. Almacena los archivos de distribucion, los metadatos y el historial de versiones para que los usuarios puedan evaluar la calidad de cada lanzamiento.

  • Los mantenedores suben distribuciones y asignan etiquetas que facilitan la busqueda por sistema operativo, version de Python o categoria de proyecto.
  • Los consumidores pueden revisar la informacion de licencia, documentacion, dependencias y estadisticas de descargas antes de instalar.
  • PyPI expone una API sencilla que pip consulta para resolver la version mas adecuada de cada dependencia.

Aunque PyPI es la fuente por defecto, pip permite autenticarte contra indices privados para cumplir politicas internas.

2.3 Diferencia entre paquetes estandar y externos

La biblioteca estandar de Python agrupa modulos incluidos con el interprete, listos para importarse sin instalar nada adicional. Son mantenidos por el propio proyecto Python y siguen su ciclo de lanzamientos.

  • Los paquetes estandar cubren utilidades frecuentes como manejo de fechas, archivos, expresiones regulares, protocolos de red y herramientas de pruebas.
  • Los paquetes externos son aquellos que debes instalar con pip porque no forman parte del interprete base. Pueden provenir de PyPI o de repositorios privados.
  • Cuando documentes un proyecto conviene aclarar que modulos dependen solo de la biblioteca estandar y cuales requieren instalaciones extra.

Diferenciar ambos grupos evita agregar dependencias innecesarias y reduce el riesgo de incompatibilidades de versiones.

2.4 Rutas de instalacion de paquetes

pip puede copiar archivos en distintas ubicaciones segun el entorno activo, los permisos y los argumentos usados durante la instalacion. Conocer estas rutas ayuda a diagnosticar conflictos o a limpiar instalaciones antiguas.

  • En un entorno virtual, los paquetes se almacenan en la carpeta site-packages del propio entorno, aislados del sistema.
  • Al usar la opcion --user, pip instala en el directorio de usuario devolviendo la ruta que reporta el comando python -m site --user-site.
  • Las instalaciones a nivel de sistema escriben en la carpeta de site-packages asociada al interprete global, lo que requiere permisos elevados en algunos sistemas.

Ejecuta los siguientes comandos para inspeccionar la ubicacion exacta de tus paquetes y metadatos:

python -m site
pip show paquete

El primer comando lista los directorios considerados por el interprete, mientras que pip show detalla donde quedo instalado un paquete especifico, su version y sus dependencias declaradas.

Resumen didactico

Comprender que es un paquete, como opera PyPI, la diferencia con la biblioteca estandar y las rutas de instalacion proporciona una base solida para gestionar dependencias con pip. Con estos conceptos claros podras interpretar mensajes de instalacion, documentar requisitos y mantener entornos limpios.