Cada vez que inicio sesión en mi instancia ec2 de Ubuntu, mi terminal es así
(base) ubuntu@ip-xx-xx-xx
Cuando ejecuto mi script de Python, que se convierte desde un cuaderno Jupyter con el entorno conda predeterminado, el script se ejecuta perfectamente. El problema comienza cuando intento hacer un cronjob.
Cuando se inicia la instancia (intentaré explicarlo lo mejor que pueda), el ipython que ejecuta el script no puede encontrar los paquetes. Porque es el entorno conda predeterminado. Pensé que todo lo que tenía que hacer era activar de alguna manera el bash fuente, pero todo falló. Lo que he probado hasta ahora
- He intentado ejecutar bash
- Intenté agregar a SHELL el bash
- He intentado obtener bash
- Intenté ejecutar ipython directamente desde el entorno conda
A estas alturas no sé lo que me estoy perdiendo. Todo lo que quiero es cuando la instancia comience a "activar" el entorno conda y con ipython ejecute el script.
Respuesta1
Supongo que virtualenv se está activando en .profile
, lo que no afecta a cron.
Sugeriría activar el venv en la línea crontab:
SHELL=/bin/bash
[crontab stuff] . /path/to/the/virtualenv/bin/activate && your.py
Configurar SHELL=/bin/bash no es realmente obligatorio, pero lo acercará al entorno "habitual". Si es necesario, configure también la RUTA, cd en el directorio correcto, etc.
Una forma decente de realizar la prueba es. ssh you@yourserver 'the command above'
Si tiene problemas para obtener el error, intente agregarlo &>/tmp/debug.log
al comando crontab.
Si no está seguro de cuál es la ruta virtualenv, intente: type activate
( echo $PATH
, print(sys.path)
, etc.)
Más información:https://stackoverflow.com/questions/3287038/cron-and-virtualenv#answer-7031758