Skip to content

Guía: Creación de un entorno virtual de Python en Debian y empaquetado de binario portable

1. Instalar dependencias del sistema en Debian

Debian gestiona Python principalmente a través de APT, por lo que primero instalamos los paquetes base y el gestor de entornos virtuales:

1
2
3
4
5
6
7
8
# Actualizar la lista de paquetes
sudo apt update

# Instalar Python 3, pip y venv
sudo apt install -y python3 python3-pip python3-venv build-essential

# (Opcional) Para entornos de desarrollo que requieran librerías nativas
sudo apt install -y python3-dev libffi-dev libssl-dev

2. Crear un entorno virtual

# Crear un directorio de trabajo para el proyecto
mkdir ~/mi_proyecto && cd ~/mi_proyecto

# Crear un virtualenv usando python3-venv
python3 -m venv venv

# Activar el entorno virtual
source venv/bin/activate

# Verificar que se usa el Python del virtualenv
which python
# → /home/usuario/mi_proyecto/venv/bin/python

3. Instalar dependencias en el virtualenv

1
2
3
4
5
# Instalar dependencias necesarias (ejemplo con Flask)
pip install flask requests

# Guardar dependencias en un requirements.txt
pip freeze > requirements.txt

4. Crear un ejecutable/bundle portable

Existen varias formas de empaquetar un proyecto Python para moverlo entre sistemas.
La más usada es PyInstaller porque genera un binario único con todas las dependencias incluidas.

4.1 Instalar PyInstaller en el virtualenv

1
2
3
4
5
# Activar el entorno si no lo está
source venv/bin/activate

# Instalar PyInstaller
pip install pyinstaller

4.2 Empaquetar tu aplicación

Supongamos que tu script principal es app.py:

1
2
3
4
5
6
# Crear el ejecutable con PyInstaller
pyinstaller --onefile app.py

# Explicación:
# --onefile  → genera un solo binario ejecutable
# app.py     → tu aplicación principal

Esto creará el binario en la carpeta dist/:

ls dist/
# → app

4.3 Probar el binario

# Ejecutar directamente el binario
./dist/app

Este binario es autocontenido, es decir, incluye el intérprete de Python y todas las dependencias, por lo que puedes copiarlo a otro sistema (siempre que sea la misma arquitectura y distribución base, ej. Debian/Ubuntu x86_64).


5. Consideraciones de portabilidad

  • El binario creado con PyInstaller no es 100% “universal”:
  • Si lo compilas en Debian 12 (amd64), funcionará en sistemas similares (ej. Ubuntu/Debian x86_64 con librerías compatibles).
  • Para máxima portabilidad, debes compilar en el sistema más “antiguo” posible que quieras soportar.
  • Si necesitas empaquetar para otra arquitectura (ej. ARM), deberás compilar allí o usar un contenedor/Docker multi-arch.

6. Alternativas a PyInstaller

  • cx_Freeze → también genera binarios, más personalizable.
  • shiv / pex → generan un único archivo .pyz autocontenido con todas las dependencias (necesitan Python instalado en el destino).
  • docker + distroless → empaquetar como contenedor en lugar de binario.

✅ Con esto tienes:
1. Instalación de Python en Debian vía APT.
2. Creación de un virtualenv.
3. Instalación de dependencias.
4. Generación de un binario portable para mover entre sistemas.