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.

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, revisa los registros de despliegue para confirmar que tus paquetes se instalaron correctamente, y busca una línea que mencione los requisitos del cliente.
  • 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.