Saltar al contenido principal

Instalar paquetes de Python

Si tus módulos personalizados de Odoo dependen de bibliotecas de Python de terceros, decláralas en un archivo requirements.txt en la raíz de tu repositorio. Skysize lo detecta e instala los paquetes listados en cada despliegue.


Agregar un archivo requirements.txt

En la raíz de tu repositorio, crea un archivo llamado requirements.txt y lista un paquete por línea:

requests
pandas==2.2.0
numpy>=1.26

Haz commit y push:

git add requirements.txt
git commit -m "Add Python dependencies"
git push

En el siguiente despliegue, Skysize ejecuta el equivalente de pip install --user -r requirements.txt dentro del contenedor de Odoo antes de que el servidor inicie, de modo que tus módulos puedan importar los paquetes.


Cómo funciona

  • El archivo se lee desde la raíz de tu repositorio (el despliegue monta la raíz del repositorio dentro del contenedor y busca requirements.txt ahí). Un requirements.txt dentro de un subdirectorio no se recoge.
  • Los paquetes se instalan en el site por usuario del contenedor, que reside en el volumen persistente del despliegue, por lo que persisten entre reinicios.
  • La instalación se ejecuta en cada despliegue (instalación y actualización), manteniendo el entorno sincronizado con el archivo.

Versión de Python

Los paquetes se instalan para el intérprete de Python que hay dentro del contenedor de Odoo, no para el Python de tu máquina. Un paquete que solo publica versiones para un Python más nuevo que el de tu versión de Odoo no se puede instalar.

Versión de OdooVersión de Python
16.03.9
17.03.10
18.03.12
19.03.12

La versión de Python viene de la imagen de Odoo y es la misma para despliegues Community y Enterprise.

Antes de añadir una dependencia, comprueba su valor Requires-Python en su página de PyPI (aparece bajo "Meta" en la columna lateral de la página del proyecto). Si pide un Python más nuevo que la tabla anterior, pip no puede instalar ninguna de sus versiones y verás un error como este:

ERROR: Ignored the following versions that require a different python version:
1.4.0 Requires-Python >=3.13
ERROR: Could not find a version that satisfies the requirement tu-paquete (from versions: none)
ERROR: No matching distribution found for tu-paquete

Cuando ocurra, fija una versión más antigua del paquete que siga siendo compatible con el Python de tu contenedor, o usa otra biblioteca. No es posible actualizar la versión de Python dentro del contenedor: la fija la versión de Odoo que despliegas.


Comprobar que tus paquetes se instalaron

La salida de pip de un despliegue está disponible en su pestaña Logs: elige requirements.log en el selector Archivo de log. Muestra exactamente lo que hizo pip, incluido el motivo de cualquier fallo. Consulta Ver logs.


Notas y limitaciones

  • Se admiten los especificadores de requisitos de pip estándar (==, >=, ~=, etc.). Fija las versiones para construcciones reproducibles.
  • Si una instalación falla, el despliegue continúa con una advertencia en lugar de abortar, así que revisa requirements.log para confirmar que tus paquetes se instalaron correctamente.
  • pip instala el archivo como un todo. Si una línea no se puede satisfacer, ninguno de los paquetes del archivo se instala, por lo que una sola dependencia incorrecta puede parecer varias bibliotecas ausentes. Corrige la línea que falla y vuelve a desplegar.
  • Eliminar un paquete de requirements.txt impide que se instale en despliegues futuros, pero no se desinstala activamente de un despliegue ya en ejecución hasta que ese despliegue se reconstruya.
  • Los paquetes que necesitan bibliotecas de sistema o compiladores para construirse pueden fallar al instalarse en el contenedor. Prefiere wheels (de Python puro o precompilados) siempre que sea posible.