Crear un instalador offline para módulos Python implica empaquetar los archivos y dependencias necesarios para los módulos que quieres instalar en una máquina destino sin requerir una conexión a internet. Este proceso puede ser útil cuando necesitas distribuir aplicaciones Python a sistemas que no tienen acceso a Internet, siempre y cuando se trate del mismo tipo de Sistema Operativo (Windows -> Windows, Mac -> Mac, Linux -> Linux) porque este procedimiento sólo empaqueta librerías precompiladas.
He aquí un esquema general de los pasos:
Configurar la Máquina Fuente (Máquina con conexión a Internet): En una máquina con acceso a internet, necesitarás reunir los módulos Python requeridos y sus dependencias.
Instalar y actualizar pip: Asegúrate de tener la última versión de pip instalada en la máquina fuente. Ejecute el siguiente comando para actualizar pip:
$ pip install --upgrade pip
- Cree un archivo de dependencias: Establecer las dependencias utilizadas por el proyecto para poder replicarlo en el servidor de producción, esto lo hacemos con el siguiente comando:
pip freeze > requirements.txt
- Descargue los módulos de Python: Utilice pip para descargar los módulos necesarios y sus dependencias en un directorio local. Puede utilizar el indicador --no-binary para asegurarse de que no se utilizan distribuciones binarias, lo que hará que se descarguen las distribuciones fuente.
pip download -r requirements.txt -d /path/to/downloaded/modules
Crear un archivo:Comprime los módulos descargados en un archivo zip o tarball. Este archivo será el instalador offline.
Transfiera el instalador a la máquina de destino (máquina sin conexión): Mueva el archivo a la máquina de destino que no tiene acceso a Internet.
Instale en la máquina sin conexión: Extraiga el archivo en la máquina de destino, navegue hasta el directorio extraído y utilice pip para instalar los módulos desde los archivos locales:
pip install --no-index --find-links=/path/to/downloaded/modules -r requirements.txt
La opción --no-index evita que pip busque paquetes remotos en PyPI, y la opción --find-links especifica la ubicación de los módulos descargados.
Tenga en cuenta que este método funciona bien para paquetes Python puros. Si tienes módulos con dependencias binarias (extensiones C), puede que necesites tomar medidas adicionales para asegurar la compatibilidad con la arquitectura de la máquina de destino.
Además, considera comprobar los términos y condiciones de la licencia de los módulos Python que estás empaquetando, especialmente si planeas distribuirlos posteriormente. Algunas licencias pueden tener restricciones a la redistribución.